From a9e6f3b2e34d0a4d7ae5c457e10438c4ac87bfb3 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 5e8323b58f..da15db2291 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 @@ -75,9 +76,20 @@ def create_fastapi_app( profile_manager: ProfileManager | None = None, 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") app = FastAPI( debug=False, + lifespan=lifespan, swagger_ui_parameters={"apisSorter": "alpha", "operationsSorter": "alpha"}, dependencies=[Depends(require_admin_by_default())] if enforce_default_admin @@ -113,15 +125,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