Есть ли способ вызвать 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)