Событие shutdown
Событие shutdown применяется к приложению FastAPI
и позволяет выполнить функцию один раз при завершении
работы приложения. Обработчик события не принимает
параметров. Обычно используется для освобождения ресурсов:
закрытия соединений с базой данных, остановки фоновых задач
или очистки временных файлов.
Синтаксис
@app.on_event('shutdown')
async def shutdown_event():
...
Пример
Давайте зарегистрируем обработчик события shutdown,
который выводит сообщение в консоль:
from fastapi import FastAPI
app = FastAPI()
@app.on_event('shutdown')
async def shutdown_event():
print('Application is shutting down')
@app.get('/')
def index():
return {'text': 'hello'}
При остановке приложения в консоль будет выведено:
Application is shutting down
Пример
Давайте используем событие shutdown для закрытия
соединения с базой данных:
from fastapi import FastAPI
app = FastAPI()
class Database:
def __init__(self):
self.connected = False
def connect(self):
self.connected = True
def disconnect(self):
self.connected = False
db = Database()
@app.on_event('shutdown')
async def close_db():
db.disconnect()
print('Database connection closed')
@app.get('/')
def index():
db.connect()
return {'connected': db.connected}
Результат выполнения кода для адреса /:
{"connected": true}
После остановки приложения соединение будет закрыто, а в консоль выведется сообщение:
Database connection closed
Пример
Давайте зарегистрируем несколько обработчиков события
shutdown. Они выполняются в порядке регистрации:
from fastapi import FastAPI
app = FastAPI()
@app.on_event('shutdown')
async def shutdown_first():
print('First shutdown handler')
@app.on_event('shutdown')
async def shutdown_second():
print('Second shutdown handler')
При остановке приложения в консоль будет выведено:
First shutdown handler
Second shutdown handler
Смотрите также
-
событие
startup,
которое выполняется при запуске приложения -
событие
lifespan,
которое объединяет события startup и shutdown -
метод
on_event,
который регистрирует обработчики событий -
метод
add_event_handler,
который добавляет обработчик события программно