fix: migrate from add_event_handler to lifespan

add_event_handler was removed in starlette 1.0.0
This commit is contained in:
Matthias
2026-03-23 07:19:53 +01:00
parent 94d0080208
commit bb2f4ac37e
+15 -18
View File
@@ -1,3 +1,4 @@
from contextlib import asynccontextmanager
import logging
from ipaddress import ip_address
from typing import Any
@@ -100,6 +101,19 @@ class FTJSONResponse(JSONResponse):
return orjson.dumps(content, option=orjson.OPT_SERIALIZE_NUMPY)
@asynccontextmanager
async def lifespan(app: FastAPI):
# Startup logic
if not ApiServer._message_stream:
# Creates the MessageStream class on startup so it has access to the same event loop
# as uvicorn
ApiServer._message_stream = MessageStream()
yield
# Shutdown logic
if ApiServer._message_stream:
ApiServer._message_stream = None
class ApiServer(RPCHandler):
__instance = None
__initialized = False
@@ -137,6 +151,7 @@ class ApiServer(RPCHandler):
redoc_url=None,
default_response_class=FTJSONResponse,
openapi_tags=_OPENAPI_TAGS,
lifespan=lifespan,
)
self.configure_app(self.app, self._config)
self.start_api()
@@ -261,24 +276,6 @@ class ApiServer(RPCHandler):
)
app.add_exception_handler(RPCException, self.handle_rpc_exception)
app.add_event_handler(event_type="startup", func=self._api_startup_event)
app.add_event_handler(event_type="shutdown", func=self._api_shutdown_event)
async def _api_startup_event(self):
"""
Creates the MessageStream class on startup
so it has access to the same event loop
as uvicorn
"""
if not ApiServer._message_stream:
ApiServer._message_stream = MessageStream()
async def _api_shutdown_event(self):
"""
Removes the MessageStream class on shutdown
"""
if ApiServer._message_stream:
ApiServer._message_stream = None
def start_api(self):
"""