From f74664a50d191e3f8e07d4e5558e78ce2d193246 Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Mon, 6 Jul 2026 13:14:54 +0200 Subject: [PATCH] Migrate to fastapi lifespan for startup events The `on_event` style decorator is deprecated https://fastapi.tiangolo.com/advanced/events/ --- frigate/api/fastapi_app.py | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/frigate/api/fastapi_app.py b/frigate/api/fastapi_app.py index 3b712dae6d..4e666c56f8 100644 --- a/frigate/api/fastapi_app.py +++ b/frigate/api/fastapi_app.py @@ -1,6 +1,7 @@ import asyncio import logging import re +from contextlib import asynccontextmanager from fastapi import Depends, FastAPI, Request from fastapi.responses import JSONResponse @@ -81,9 +82,20 @@ def create_fastapi_app( config_holder: ConfigHolder | None = None, notice_registry: NoticeRegistry | None = None, ): + @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") app = FastAPI( debug=False, + lifespan=lifespan, swagger_ui_parameters={"apisSorter": "alpha", "operationsSorter": "alpha"}, dependencies=[Depends(require_admin_by_default())] if enforce_default_admin @@ -119,15 +131,6 @@ def create_fastapi_app( database.close() 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) if frigate_config.auth.failed_login_rate_limit is None: limiter.enabled = False