Что учить после CRUD на Python: база, интеграции и запуск сервиса
Создать, прочитать, изменить, удалить — первый CRUD готов. Следующий курс часто выбирают по списку технологий: Redis, Kafka, Kubernetes. Но сам проект может ещё терять данные при ошибке или падать от одного недоступного внешнего API. Полезнее выбрать продолжение по тому, какую ответственность вы готовы добавить своему сервису.
Возьмём приложение заказов. Оно уже сохраняет товар и возвращает JSON. Теперь заказ нужно оформить целиком, проверить права, получить остатки со склада и запустить отчёт. Каждое такое изменение даёт понятную учебную задачу.
Данные должны оставаться согласованными
Создание заказа и его позиций должно либо завершиться полностью, либо откатиться. Начните с транзакции из нескольких записей. Затем добавьте повторный запрос клиента и конфликт двух редакторов. Здесь важнее объяснить результат при сбое, чем выучить ещё один метод ORM.
Когда схема меняется, учитесь переносить существующие данные. Разбор переименования колонки в Alembic показывает, почему миграцию проверяют на заполненной базе.
Внешняя система может не ответить
Интеграция со складом добавляет таймауты, ошибочные ответы и собственный формат данных. Пройдите путь от обработки отказа внешнего API до управления HTTP-клиентом. Полезный результат — ваш API выдаёт понятный ответ и освобождает ресурсы, даже если соседний сервис сломался.
Тест должен ловить вашу ошибку
Статус 200 ещё не доказывает правильность заказа. Проверяйте содержимое, права второго пользователя и состояние базы после отказа. Сюда относятся тесты контракта API и аккуратная подмена зависимостей.
Если тестирование даётся тяжело из-за связанных глобальных объектов, следующий шаг — структура проекта, типы и интерфейсы. Это повод поработать с самим Python, а не немедленно менять FastAPI на другой фреймворк.
Работа продолжается после HTTP-ответа
Отчёт и письмо позволяют разобраться с фоновой задачей и очередью. Сформулируйте, что вы обещаете пользователю при ответе 202: просто начать попытку или сохранить задание до успешного выполнения. От этого зависит архитектура.
Сервис должен запускаться без автора рядом
Когда поведение приложения стало понятным, пройдите маршрут первого деплоя. Другой человек должен получить проект, задать настройки и запустить его по вашей инструкции. Следующий уровень — обновить версию, не потерять данные и разобраться в сбое.
Выберите один из этих результатов и доведите его до проверяемого поведения в своём проекте. Так новые инструменты появляются по делу: очередь — для сохранённой фоновой работы, контейнеры — для окружения, мониторинг — для наблюдения за запущенным сервисом.
Попробовать тестирование API можно в открытом уроке с TestClient и pytest.
Собрать следующий этап проекта
Если проект уже вырос из одного файла, пригодится следующий шаг: разделить код на пакеты, описать интерфейсы типами и покрыть поведение тестами. Этому посвящён бесплатный курс Python для продвинутых: от объектной модели до небольшого приложения с конфигурацией и логированием.
Посмотреть программу: Python для продвинутых: ООП, типизация и тестирование
Проверить детали: FastAPI: тестирование.
Продолжить на практике
- Python для продвинутых: ООП, типизация и тестирование ↗
Практический курс-мост от базового Python к разработке поддерживаемых приложений. Вы разберётесь со структурой пакетов, объектной моделью, современной типизацией и автоматическими тестами, а затем соедините эти инструменты в небольшом приложении с хранением данных и логированием.
- FastAPI для начинающих: API с базой данных и тестами ↗
Соберёте свой первый полноценный backend на FastAPI: с базой данных, регистрацией, JWT-авторизацией и автотестами. 34 коротких урока и 140 заданий с проверкой — бесплатно.
- Docker и Docker Compose: контейнеризация приложений ↗
Упакуйте приложение в Docker и запустите его с PostgreSQL через Compose. Образы, сети, тома, диагностика поломок, обновление версий и восстановление данных — с практикой и итоговым проектом.
