mirror of https://github.com/scrapy/scrapy.git
added response_received signal
--HG-- extra : convert_revision : svn%3Ab85faa78-f9eb-468e-a121-7cced6da292c%40164
This commit is contained in:
parent
632b975ce7
commit
3975bf95c7
|
|
@ -1,7 +1,7 @@
|
|||
"""
|
||||
request-response middleware extension
|
||||
"""
|
||||
from scrapy.core import log
|
||||
from scrapy.core import signals, log
|
||||
from scrapy.http import Request, Response
|
||||
from scrapy.core.exceptions import NotConfigured
|
||||
from scrapy.utils.misc import load_class, mustbe_deferred
|
||||
|
|
@ -51,7 +51,7 @@ class DownloaderMiddlewareManager(object):
|
|||
function.
|
||||
|
||||
If returns a Response object, Scrapy won't bother calling ANY other
|
||||
request or exception middleware, or the appropriate download function;
|
||||
request or exception middleware, or the appropiate download function;
|
||||
it'll return that Response. Response middleware is always called on
|
||||
every response.
|
||||
|
||||
|
|
@ -132,7 +132,7 @@ class DownloaderMiddlewareManager(object):
|
|||
for method in self.request_middleware:
|
||||
response = method(request=request, spider=spider)
|
||||
assert response is None or isinstance(response, (Response, Request)), \
|
||||
'Middleware %s.process_request must returns None, Response or Request, got %s ' % \
|
||||
'Middleware %s.process_request must return None, Response or Request, got %s' % \
|
||||
(method.im_self.__class__.__name__, response.__class__.__name__)
|
||||
if response:
|
||||
return response
|
||||
|
|
@ -146,10 +146,12 @@ class DownloaderMiddlewareManager(object):
|
|||
for method in self.response_middleware:
|
||||
response = method(request=request, response=response, spider=spider)
|
||||
assert isinstance(response, (Response, Request)), \
|
||||
'Middleware %s.process_response must returns Response or Request, got %s ' % \
|
||||
'Middleware %s.process_response must return Response or Request, got %s' % \
|
||||
(method.im_self.__class__.__name__, type(response))
|
||||
if isinstance(response, Request):
|
||||
signals.send_catch_log(signal=signals.response_received, sender=self.__class__, response=response, spider=spider)
|
||||
return response
|
||||
signals.send_catch_log(signal=signals.response_received, sender=self.__class__, response=response, spider=spider)
|
||||
return response
|
||||
|
||||
def process_exception(_failure):
|
||||
|
|
@ -157,7 +159,7 @@ class DownloaderMiddlewareManager(object):
|
|||
for method in self.exception_middleware:
|
||||
response = method(request=request, exception=exception, spider=spider)
|
||||
assert response is None or isinstance(response, (Response, Request)), \
|
||||
'Middleware %s.process_exception must returns None, Response or Request, got %s ' % \
|
||||
'Middleware %s.process_exception must return None, Response or Request, got %s' % \
|
||||
(method.im_self.__class__.__name__, type(response))
|
||||
if response:
|
||||
return response
|
||||
|
|
|
|||
|
|
@ -43,6 +43,10 @@ request_received = object()
|
|||
# args: request, spider
|
||||
request_uploaded = object()
|
||||
|
||||
# When new response is received (by the engine) from the downloader (middleware)
|
||||
# args: response, spider
|
||||
response_received = object()
|
||||
|
||||
# When response arrives from the downloader
|
||||
# args: response, spider
|
||||
response_downloaded = object()
|
||||
|
|
|
|||
Loading…
Reference in New Issue