clean spidermiddleware callback/errback handling

--HG--
extra : convert_revision : svn%3Ab85faa78-f9eb-468e-a121-7cced6da292c%40399
This commit is contained in:
Daniel Grana 2008-11-24 10:17:56 +00:00
parent c7b3fae97a
commit b56a5d933e
1 changed files with 3 additions and 30 deletions

View File

@ -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