From b56a5d933e0d4e0359a8743eeb55c3468a01b9ae Mon Sep 17 00:00:00 2001 From: Daniel Grana Date: Mon, 24 Nov 2008 10:17:56 +0000 Subject: [PATCH] clean spidermiddleware callback/errback handling --HG-- extra : convert_revision : svn%3Ab85faa78-f9eb-468e-a121-7cced6da292c%40399 --- scrapy/trunk/scrapy/spider/middleware.py | 33 +++--------------------- 1 file changed, 3 insertions(+), 30 deletions(-) diff --git a/scrapy/trunk/scrapy/spider/middleware.py b/scrapy/trunk/scrapy/spider/middleware.py index 782f099e5..55e561390 100644 --- a/scrapy/trunk/scrapy/spider/middleware.py +++ b/scrapy/trunk/scrapy/spider/middleware.py @@ -8,7 +8,7 @@ from twisted.python.failure import Failure from scrapy import log from scrapy.core.exceptions import NotConfigured from scrapy.utils.misc import load_class -from scrapy.utils.defer import mustbe_deferred +from scrapy.utils.defer import mustbe_deferred, defer_result from scrapy.conf import settings def _isiterable(possible_iterator): @@ -18,16 +18,13 @@ def _isiterable(possible_iterator): return None class SpiderMiddlewareManager(object): - def __init__(self, callback=None, errback=None): + def __init__(self): self.loaded = False self.spider_middleware = [] self.result_middleware = [] self.exception_middleware = [] self.filter_middleware = [] self.domaininfo = {} - - self.callback = callback or self._callback - self.errback = errback or self._errback self.load() def _add_middleware(self, mw): @@ -94,29 +91,5 @@ class SpiderMiddlewareManager(object): return dfd def call(self, request, response, spider): - if isinstance(response, Exception): - return self.errback(request, Failure(response), spider) - return self.callback(request, response, spider) - - def _callback(self, request, response, spider): - request.deferred.callback(response) + defer_result(response).chainDeferred(request.deferred) return request.deferred - - def _errback(self, request, failure, spider): - request.deferred.errback(failure) - return request.deferred - - -class DummyMiddleware(object): - def process_scrape(self, response, spider): - pass - - def process_result(self, response, result, spider): - return result - - def process_exception(self, response, exception, spider): - pass - - def filter(self, item): - return True -