РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
33 of 307 menu

Параметр lifespan

Параметр lifespan передаётся в конструктор класса FastAPI и принимает асинхронную функцию-генератор. Код до оператора yield выполняется при запуске приложения, а код после yield - при его остановке. Это современная замена устаревшим событиям startup и shutdown. Функция получает первым аргументом экземпляр приложения app.

Синтаксис

from contextlib import asynccontextmanager from fastapi import FastAPI @asynccontextmanager async def lifespan(app: FastAPI): # startup code yield # shutdown code app = FastAPI(lifespan=lifespan)

Пример

Давайте выведем сообщения при запуске и остановке приложения:

from contextlib import asynccontextmanager from fastapi import FastAPI @asynccontextmanager async def lifespan(app: FastAPI): print('startup') yield print('shutdown') app = FastAPI(lifespan=lifespan) @app.get('/') def index(): return {'text': 'hello'}

При запуске сервера в терминале появится строка:

"startup"

При остановке сервера появится строка:

"shutdown"

Пример

Давайте откроем соединение с базой данных при запуске и закроем его при остановке:

from contextlib import asynccontextmanager from fastapi import FastAPI db = {} @asynccontextmanager async def lifespan(app: FastAPI): db['connection'] = 'opened' yield db['connection'] = 'closed' app = FastAPI(lifespan=lifespan) @app.get('/status') def status(): return {'db': db['connection']}

Результат выполнения кода для адреса /status:

{"db": "opened"}

Пример

Давайте сохраним объект в состоянии приложения через параметр app.state:

<+python+> from contextlib import asynccontextmanager from fastapi import FastAPI @asynccontextmanager async def lifespan(app: FastAPI): app.state.items = ['a', 'b', 'c', 'd', 'e'] yield app.state.items = [] app = FastAPI(lifespan=lifespan) @app.get('/items') def items(): return {'items': app.state.items} <-python+>

Результат выполнения кода для адреса /items:

{"items": ["a", "b", "c", "d", "e"]}

Смотрите также

  • событие startup,
    которое выполняет код при запуске приложения
  • событие shutdown,
    которое выполняет код при остановке приложения
  • событие lifespan,
    которое управляет жизненным циклом приложения
  • класс FastAPI,
    который создаёт приложение и принимает параметр lifespan
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить