Назад к вопросам
СБЕР
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 — более традиционный способ для тех же целей.