python config_error ai_generated true

RuntimeError: Cannot add middleware after an application has started

ID: python/starlette-middleware-order-matters

Also available as: JSON · Markdown · 中文
80%Fix Rate
87%Confidence
0Evidence
2024-07-11First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
0.30.x active — — —
0.36.x active — — —

Root Cause

Calling app.add_middleware() after the ASGI application has begun serving requests (e.g. inside a request handler).

generic

中文

在ASGI应用开始处理请求后(例如在请求处理函数内部)调用app.add_middleware()。

Workarounds

  1. 97% success
    app = FastAPI()\napp.add_middleware(CORSMiddleware, allow_origins=['*'])
  2. 90% success
    app = MyMiddleware(app)

Dead Ends

Common approaches that don't work:

  1. 85% fail

    Startup events run after middleware stack is built.

  2. 80% fail

    Existing routes and state are lost.