Есть ли способ вызвать api непосредственно в fastapi при запуске внутреннего сервера?

Итак, у меня есть API, который обновляет данные о погоде в db каждый час (с использованием декоратора repeat_every). Есть ли способ вызывать этот API автоматически при запуске и работе внутреннего сервера вместо того, чтобы вызывать его вручную?

1 ответ

Да, есть. Вы можете определить обработчики событий (функции), которые необходимо выполнить до запуска и завершения работы приложения.

Ты можешь использовать @app.on_event("startup" | "shutdown")

@app.on_event("startup")
async def startup():
    do something...


@app.on_event("shutdown")
async def shutdown():
    do something...

Если вы столкнулись с ошибкой циклического импорта, создайте свой api как маршрутизатор, а не импортируйте из основного файла.

пример

from fastapi import APIRouter


router = APIRouter()

@router.on_event("startup")
async def startup():
    do something...

И из вашего основного файла

from path_to_your_api import router

app.include_router(router)
Другие вопросы по тегам