, , - .
:
- 0 -
- 1..inf - process_request
- inf - ( )
- inf..1 - process_resonse
- 0 - ,
... 1, FIRST, LAST ... 901 LAST, FIRST ( ).
, , . ( ), ( ). ( ), ( ). ... scrapy, ( init MiddlewareManager ):
class DownloaderMiddlewareManager(MiddlewareManager):
def __init__(self, *middlewares):
self.middlewares = middlewares
self.methods = defaultdict(list)
for mw in middlewares:
self._add_middleware(mw)
def _add_middleware(self, mw):
if hasattr(mw, 'process_request'):
self.methods['process_request'].append(mw.process_request)
if hasattr(mw, 'process_response'):
self.methods['process_response'].insert(0, mw.process_response)
if hasattr(mw, 'process_exception'):
self.methods['process_exception'].insert(0, mw.process_exception)
, ( ), ( ).