Перейти к содержанию

Практикум: почему жизненный цикл приложения не должен принадлежать FastAPI

Часть статьи «до»: lifespan_api.py хранит жизненный цикл в lifespan FastAPI, а lifespan_worker.py содержит воркер того же сервиса, у которого нет lifespan и которому приходится повторять служебный код. Часть «после» — практикум с единым жизненным циклом, где API, планировщик и воркер используют один AppSpec.

uv venv --python 3.13 .venv
uv pip install --python .venv/bin/python fastapi "uvicorn[standard]"
.venv/bin/python lifespan_api.py 8000        # then SIGTERM it
.venv/bin/python lifespan_worker.py          # then SIGTERM it

Исходный код практикума на GitHub.