From 86e1382f4368686f2adec77409c1c58d899f9b3b 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 3f8d8a7a5f..5b5b126e2b 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 typing import Optional from fastapi import Depends, FastAPI, Request @@ -76,9 +77,20 @@ def create_fastapi_app( profile_manager: Optional[ProfileManager] = 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 @@ -114,15 +126,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