Merge pull request #179 from artem-dev/errback_fix

This fixes the case where failure.request wasn't available when the failure was generated in a spider middleware (for example, the HttpError middleware).
This commit is contained in:
Pablo Hoffman 2012-10-06 08:47:26 -07:00
commit 1e1cc76fb7
2 changed files with 2 additions and 5 deletions

View File

@ -200,16 +200,12 @@ class ExecutionEngine(object):
response=response, request=request, spider=spider)
return response
def _on_error(failure):
failure.request = request
return failure
def _on_complete(_):
slot.nextcall.schedule()
return _
dwld = self.downloader.fetch(request, spider)
dwld.addCallbacks(_on_success, _on_error)
dwld.addCallbacks(_on_success)
dwld.addBoth(_on_complete)
return dwld

View File

@ -136,6 +136,7 @@ class Scraper(object):
request_result, request, spider)
def call_spider(self, result, request, spider):
result.request = request
dfd = defer_result(result)
dfd.addCallbacks(request.callback or spider.parse, request.errback)
return dfd.addCallback(iterate_spider_output)