12 промтов для FastAPI: эндпоинты, Pydantic и фоновые задачи
FastAPI — один из самых быстрорастущих веб-фреймворков Python. За счёт асинхронности и автогенерации OpenAPI-схем он позволяет собирать API быстрее, чем Flask или Django. Но даже опытные разработчики тратят время на шаблонный код и поиск правильных формулировок для нейросетей. В этой подборке — 12 проверенных промтов для работы с FastAPI, Pydantic и фоновыми задачами. Они сэкономят часы и помогут получить чистый код с первого запроса.
Все промты проверены в реальной работе. Формулируйте их как есть или адаптируйте под свой проект. Для каждого промта я даю пояснение, когда он нужен и что ожидать на выходе.
Промты для эндпоинтов
1. Скелет REST API для существующей модели
Самый частый запрос — сгенерировать CRUD за пару секунд.
Создай FastAPI-приложение с маршрутами для модели {Product}.
Нужны эндпоинты: GET /products, GET /products/{id}, POST /products, PUT /products/{id}, DELETE /products/{id}.
Используй SQLAlchemy 2.0 + Pydantic. Добавь валидацию: title — строка от 3 до 100 символов, price — число больше 0.
Ответы оборачивай в JSON: {"data": ..., "meta": {"total": n}}.
Пример результата — router на 60–80 строк с зависимостями для сессии БД, status_code=201 для POST и обработкой 404.
2. Эндпоинт с фильтрацией, пагинацией и сортировкой
Напиши GET /items с query-параметрами: page, size, sort_by, order (asc/desc), filter_field, filter_value.
Используй класс PageParams с Pydantic. Верни items и общее количество. Обработай ошибку неверного sort_by — верни 400.
Такой промт генерирует универсальный список, который потом легко переиспользовать в разных модулях.
3. Асинхронный эндпоинт с таймаутом и отменой
Создай асинхронный эндпоинт /fetch-data, который вызывает внешний API через httpx.AsyncClient.
Добавь таймаут 5 секунд и обработку asyncio.TimeoutError с возвратом 504. Используй структуру try/except.
Не забудьте в промте указать версию httpx — от этого зависит синтаксис.
4. Эндпоинт загрузки файла с валидацией типа и размера
Напиши POST /upload для загрузки изображений. Принимай файл через UploadFile.
Ограничь размер 5 МБ и расширения: .jpg, .png, .webp. При превышении — 413, при неверном типе — 415.
Сохраняй файл через aiofiles, верни ссылку на скачивание.
Промт закрывает большинство задач с файлами: от аватарок до документов.
Промты для Pydantic
5. Схема с вложенными моделями
Создай Pydantic-схему Order с полями: id, customer, items (лист OrderItem), total_sum.
Вложенную схему OrderItem опиши с помощью from_attributes=True. Добавь вычисляемое поле total_sum через @computed_field.
Это типичный случай, когда руки сами тянутся написать много кода, а промт делает это за секунду.
6. Валидация пароля с кастомным validator
Добавь в схему UserCreate поле password.
Напиши model_validator, который проверяет:
— длину не менее 8 символов,
— наличие букв верхнего и нижнего регистра,
— наличие цифры.
Верни понятную ошибку на русском.
Вы получите готовый валидатор без необходимости вспоминать регулярные выражения.
7. Переиспользуемая схема с конфигурацией примеров
Создай схему ProductOut с настройками ConfigDict(from_attributes=True, json_schema_extra={...}).
В json_schema_extra добавь пример валидного объекта. Затем используй эту схему для документации OpenAPI.
Этот промт полезен, когда нужно сразу показать фронтендерам формат данных.
8. Преобразование между ORM и Pydantic
Напиши функцию-хелпер for_serialize(obj), которая принимает SQLAlchemy-модель и превращает её в Pydantic-схему.
Для связи многие-ко-многим загрузи связанные объекты заранее через selectinload.
Помогает избежать ошибок lazy loading при сериализации.
Промты для фоновых задач
9. Базовая фоновая задача
Добавь в приложение фоновую задачу send_welcome_email(user_id).
Вызови её после создания пользователя через BackgroundTasks.
Внутри установи ожидание 2 секунды (имитация отправки). Верни 201 сразу.
Простой промт, но отлично показывает принцип fire-and-forget.
10. Очередь задач через Celery
Создай celery_app.py с конфигурацией для Redis.
Определи задачу process_report(file_path) с retry_backoff=True, max_retries=3.
Напиши FastAPI-эндпоинт, который кладёт задачу в очередь через .delay().
Промт для продакшена. Уточните брокер — Redis или RabbitMQ, чтобы код был корректный.
11. Фоновая задача с прогрессом через WebSocket
Реализуй эндпоинт POST /start-job, который запускает задачу в фоне, и WebSocket /ws/{job_id}.
Используй глобальный store для хранения прогресса. Отправляй клиенту прогресс через WebSocket каждые 10% выполнения.
Это один из самых сложных промтов, но даёт готовую архитектуру для индикаторов выполнения.
12. Планировщик повторяющихся задач
Интегрируй APScheduler в FastAPI: создай периодическую задачу clean_tmp_dir, которая запускается каждую ночь в 3:00.
Добавь запуск планировщика в lifespan приложения и graceful shutdown.
Замена Celery beat, когда нужен простой планировщик без дополнительных сервисов.
Что ещё учесть
Все промты стоит адаптировать под вашу версию FastAPI и Pydantic. Актуальная документация:
- FastAPI Docs
- Pydantic Docs
- Background Tasks
- Celery + FastAPI
Заключение
Эти 12 промтов закрывают большинство ежедневных задач: от простых CRUD-эндпоинтов до фоновой обработки с WebSocket. Держите их под рукой и адаптируйте под свой проект — экономия времени составит не один час. Чтобы закрепить навык, попробуйте на собственном проекте: начните с п.1, а затем постепенно внедряйте фоновые задачи.
Если у вас есть любимые промты для FastAPI — делитесь в комментариях. И не забудьте подписаться на обновления блога: дальше будет подборка для Django и Flask.
Комментарии