Migrate to fastapi lifespan for startup events

The `on_event` style decorator is deprecated

https://fastapi.tiangolo.com/advanced/events/
This commit is contained in:
Martin Weinelt
2026-07-06 17:48:16 +02:00
parent 279dcf9bca
commit 86e1382f43
+12 -9
View File
@@ -1,6 +1,7 @@
import asyncio import asyncio
import logging import logging
import re import re
from contextlib import asynccontextmanager
from typing import Optional from typing import Optional
from fastapi import Depends, FastAPI, Request from fastapi import Depends, FastAPI, Request
@@ -76,9 +77,20 @@ def create_fastapi_app(
profile_manager: Optional[ProfileManager] = None, profile_manager: Optional[ProfileManager] = None,
enforce_default_admin: bool = True, enforce_default_admin: bool = True,
): ):
@asynccontextmanager
async def lifespan(app: FastAPI):
logger.info("FastAPI started")
asyncio.create_task(
debug_replay_auto_stop_watchdog(
replay_manager, frigate_config, config_publisher
)
)
yield
logger.info("Starting FastAPI app") logger.info("Starting FastAPI app")
app = FastAPI( app = FastAPI(
debug=False, debug=False,
lifespan=lifespan,
swagger_ui_parameters={"apisSorter": "alpha", "operationsSorter": "alpha"}, swagger_ui_parameters={"apisSorter": "alpha", "operationsSorter": "alpha"},
dependencies=[Depends(require_admin_by_default())] dependencies=[Depends(require_admin_by_default())]
if enforce_default_admin if enforce_default_admin
@@ -114,15 +126,6 @@ def create_fastapi_app(
database.close() database.close()
return response return response
@app.on_event("startup")
async def startup():
logger.info("FastAPI started")
asyncio.create_task(
debug_replay_auto_stop_watchdog(
replay_manager, frigate_config, config_publisher
)
)
# Rate limiter (used for login endpoint) # Rate limiter (used for login endpoint)
if frigate_config.auth.failed_login_rate_limit is None: if frigate_config.auth.failed_login_rate_limit is None:
limiter.enabled = False limiter.enabled = False