MCPcopy Create free account
hub / github.com/encode/starlette / build_middleware_stack

Method build_middleware_stack

starlette/applications.py:63–83  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

61 self.middleware_stack: ASGIApp | None = None
62
63 def build_middleware_stack(self) -> ASGIApp:
64 debug = self.debug
65 error_handler = None
66 exception_handlers: dict[Any, ExceptionHandler] = {}
67
68 for key, value in self.exception_handlers.items():
69 if key in (500, Exception):
70 error_handler = value
71 else:
72 exception_handlers[key] = value
73
74 middleware = [Middleware(ServerErrorMiddleware, handler=error_handler, debug=debug)]
75 if self.max_body_size is not None:
76 middleware.append(Middleware(RequestBodyLimitMiddleware, max_body_size=self.max_body_size))
77 middleware += self.user_middleware
78 middleware.append(Middleware(ExceptionMiddleware, handlers=exception_handlers, debug=debug))
79
80 app = self.router
81 for cls, args, kwargs in reversed(middleware):
82 app = cls(app, *args, **kwargs)
83 return app
84
85 @property
86 def routes(self) -> list[BaseRoute]:

Calls 3

MiddlewareClass · 0.90
itemsMethod · 0.45
appendMethod · 0.45