Wie füge ich eine Middleware hinzu, bevor die Anwendung in FastAPI startet?
Posted: 29 Dec 2024, 11:01
Mithilfe von Lifespan Events und Middleware möchte ich beim Anwendungsstart eine Middleware in einen Asynccontextmanager einfügen. Es sollte ungefähr so aussehen:
Das obige Beispiel löst jedoch den folgenden Fehler aus:
Aber am Anfang der Lifespan Events-Dokumentation wird Folgendes erwähnt:
Sie können Logik (Code) definieren ), die bevor
die Anwendung startet ausgeführt werden sollte. Dies bedeutet, dass dieser Code
einmal ausgeführt wird, bevor die Anwendung beginnt, Anfragen zu empfangen.
Wie soll ich nähern Sie sich dem?
Code: Select all
@asynccontextmanager
async def lifespan(app: FastAPI):
if some_condition:
@app.middleware("http")
async def my_middleware(request: Request, call_next):
response = await call_next(request)
return response
yield
pass
app = FastAPI(lifespan=lifespan)
Code: Select all
RuntimeError: Cannot add middleware after an application has started
Sie können Logik (Code) definieren ), die bevor
die Anwendung startet ausgeführt werden sollte. Dies bedeutet, dass dieser Code
einmal ausgeführt wird, bevor die Anwendung beginnt, Anfragen zu empfangen.
Wie soll ich nähern Sie sich dem?