From 155dd0a01a11000a06261426d4589548d8f56571 Mon Sep 17 00:00:00 2001 From: Mike Hukiewitz Date: Wed, 19 Apr 2023 12:01:32 +0200 Subject: [PATCH 1/2] Problem: @app.on_event("startup") would not be triggered on uvicorn startup Solution: Relay "lifespan" events from the AlephApp to the http_app --- src/aleph/sdk/vm/app.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/aleph/sdk/vm/app.py b/src/aleph/sdk/vm/app.py index 0077885e..aa717169 100644 --- a/src/aleph/sdk/vm/app.py +++ b/src/aleph/sdk/vm/app.py @@ -79,6 +79,10 @@ async def send_handler_result(): raise ValueError("No send method specified") return send_handler_result() + elif scope["type"] == "lifespan": + # Call the lifespan handler + if self.http_app: + await self.http_app(scope=scope, receive=receive, send=send) else: raise ValueError(f"Unknown scope type '{scope['type']}'") From 2252ab3afda03a406c60ca4bdb48ff65a04aeb55 Mon Sep 17 00:00:00 2001 From: Mike Hukiewitz Date: Wed, 19 Apr 2023 12:03:43 +0200 Subject: [PATCH 2/2] simplify branching --- src/aleph/sdk/vm/app.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/aleph/sdk/vm/app.py b/src/aleph/sdk/vm/app.py index aa717169..88bf3eb8 100644 --- a/src/aleph/sdk/vm/app.py +++ b/src/aleph/sdk/vm/app.py @@ -62,7 +62,7 @@ async def __call__( receive: Optional[Callable[[], Awaitable[Any]]] = None, send: Optional[Callable[[Dict[Any, Any]], Awaitable[Any]]] = None, ): - if scope["type"] in ("http", "websocket"): + if scope["type"] in ("http", "websocket", "lifespan"): if self.http_app: await self.http_app(scope=scope, receive=receive, send=send) else: @@ -79,10 +79,6 @@ async def send_handler_result(): raise ValueError("No send method specified") return send_handler_result() - elif scope["type"] == "lifespan": - # Call the lifespan handler - if self.http_app: - await self.http_app(scope=scope, receive=receive, send=send) else: raise ValueError(f"Unknown scope type '{scope['type']}'")