Sobes.tech
Назад к вопросам
Middle
1

Что такое lifespan в FastAPI? Какие механизмы есть для выполнения кода перед запуском и после остановки приложения?

Компании, где спрашивали
СБЕРСБЕР

Ответ от нейросети

sobes.tech AI

В FastAPI lifespan — это механизм управления жизненным циклом приложения, позволяющий выполнять код при старте и завершении работы сервера.

Для выполнения кода перед запуском и после остановки приложения используются специальные функции, которые можно определить с помощью контекстного менеджера или декоратора @app.on_event:

  • @app.on_event("startup") — код, который выполняется при запуске приложения.
  • @app.on_event("shutdown") — код, который выполняется при остановке приложения.

Пример с использованием событий:

from fastapi import FastAPI

app = FastAPI()

@app.on_event("startup")
async def startup_event():
    print("Приложение запускается: инициализация ресурсов")

@app.on_event("shutdown")
async def shutdown_event():
    print("Приложение останавливается: освобождение ресурсов")

Также в FastAPI 0.70+ появился параметр lifespan, который позволяет задать асинхронный контекстный менеджер для более гибкого управления жизненным циклом:

from contextlib import asynccontextmanager
from fastapi import FastAPI

@asynccontextmanager
def lifespan(app: FastAPI):
    # Код при старте
    print("Запуск")
    yield
    # Код при остановке
    print("Остановка")

app = FastAPI(lifespan=lifespan)

Таким образом, lifespan — это современный способ централизованно управлять стартом и остановкой приложения, а @app.on_event — более традиционный способ для тех же целей.