Практикум: жизненный цикл приложения внутри FastAPI¶
В lifespan_api.py хранилище отчётов открывается внутри FastAPI lifespan. В lifespan_worker.py запуск ресурса и прогрев настраиваются повторно для воркера. Обе версии корректно закрывают ресурс, в том числе при ошибке запуска. Общий runtime позволяет убрать это дублирование, когда у сервиса появляется несколько точек входа.
check_lifespans.py проверяет четыре случая: успешный HTTP-запрос, завершение отчёта в воркере и ошибку запуска в каждой версии. HTTP проверяется через TestClient FastAPI, воркер останавливается через asyncio.Event.
ReportStore взят из практикума с общим жизненным циклом. Это имитация хранилища в памяти для проверки времени жизни ресурса, а не клиент базы данных. При копировании примеров сохраните соседний каталог практикума.
Запустите из каталога docs/blog/lab/2026-09-07-lifecycle-not-fastapi в копии репозитория: