11import logging
22import types
33
4- from bolt .exceptions import ImproperlyConfigured , MiddlewareNotUsed
4+ from bolt .exceptions import ImproperlyConfigured
55from bolt .logs import log_response
66from bolt .runtime import settings
77from bolt .signals import request_finished
1515
1616class BaseHandler :
1717 _view_middleware = None
18- _exception_middleware = None
1918 _middleware_chain = None
2019
2120 def load_middleware (self ):
@@ -25,29 +24,12 @@ def load_middleware(self):
2524 Must be called after the environment is fixed (see __call__ in subclasses).
2625 """
2726 self ._view_middleware = []
28- self ._exception_middleware = []
2927
3028 get_response = self ._get_response
3129 handler = convert_exception_to_response (get_response )
3230 for middleware_path in reversed (settings .MIDDLEWARE ):
3331 middleware = import_string (middleware_path )
34- try :
35- # Adapt handler, if needed.
36- adapted_handler = self .adapt_method_mode (
37- handler ,
38- debug = settings .DEBUG ,
39- name = "middleware %s" % middleware_path ,
40- )
41- mw_instance = middleware (adapted_handler )
42- except MiddlewareNotUsed as exc :
43- if settings .DEBUG :
44- if str (exc ):
45- logger .debug ("MiddlewareNotUsed(%r): %s" , middleware_path , exc )
46- else :
47- logger .debug ("MiddlewareNotUsed: %r" , middleware_path )
48- continue
49- else :
50- handler = adapted_handler
32+ mw_instance = middleware (handler )
5133
5234 if mw_instance is None :
5335 raise ImproperlyConfigured (
@@ -57,42 +39,15 @@ def load_middleware(self):
5739 if hasattr (mw_instance , "process_view" ):
5840 self ._view_middleware .insert (
5941 0 ,
60- self .adapt_method_mode (mw_instance .process_view ),
61- )
62- if hasattr (mw_instance , "process_exception" ):
63- # The exception-handling stack is still always synchronous for
64- # now, so adapt that way.
65- self ._exception_middleware .append (
66- self .adapt_method_mode (False , mw_instance .process_exception ),
42+ mw_instance .process_view ,
6743 )
6844
6945 handler = convert_exception_to_response (mw_instance )
7046
71- # Adapt the top of the stack, if needed.
72- handler = self .adapt_method_mode (handler )
7347 # We only assign to this when initialization is complete as it is used
7448 # as a flag for initialization being complete.
7549 self ._middleware_chain = handler
7650
77- def adapt_method_mode (
78- self ,
79- method ,
80- debug = False ,
81- name = None ,
82- ):
83- """
84- Adapt a method to be in the correct "mode":
85- - If is_async is False:
86- - Synchronous methods are left alone
87- - Asynchronous methods are wrapped with async_to_sync
88- - If is_async is True:
89- - Synchronous methods are wrapped with sync_to_async()
90- - Asynchronous methods are left alone
91- """
92- if debug and not name :
93- name = name or "method %s()" % method .__qualname__
94- return method
95-
9651 def get_response (self , request ):
9752 """Return an HttpResponse object for the given HttpRequest."""
9853 # Setup default url resolver for this thread
@@ -128,13 +83,7 @@ def _get_response(self, request):
12883
12984 if response is None :
13085 wrapped_callback = self .make_view_atomic (callback )
131-
132- try :
133- response = wrapped_callback (request , * callback_args , ** callback_kwargs )
134- except Exception as e :
135- response = self .process_exception_by_middleware (e , request )
136- if response is None :
137- raise
86+ response = wrapped_callback (request , * callback_args , ** callback_kwargs )
13887
13988 # Complain if the view returned None (a common error).
14089 self .check_response (response , callback )
@@ -189,17 +138,6 @@ def make_view_atomic(self, view):
189138 view = transaction .atomic (using = alias )(view )
190139 return view
191140
192- def process_exception_by_middleware (self , exception , request ):
193- """
194- Pass the exception to the exception middleware. If no middleware
195- return a response for this exception, return None.
196- """
197- for middleware_method in self ._exception_middleware :
198- response = middleware_method (request , exception )
199- if response :
200- return response
201- return None
202-
203141
204142def reset_urlconf (sender , ** kwargs ):
205143 """Reset the URLconf after each request is finished."""
0 commit comments