如果扭曲延迟中的Errback /无法打开CONNECT隧道错误,则Scrapyd重试

时间:2015-07-08 10:34:05

标签: proxy scrapy deferred scrapyd proxytunnel

我正在使用Scrapy中的一个代理循环,有时一些代理有错误,这会阻止我的蜘蛛。 错误是“无法打开CONNECT隧道” 如果出现此错误,如何将代码更改为使用其他代理重试?

以下是需要修改的代码: https://github.com/scrapy/scrapy/blob/master/scrapy/core/downloader/handlers/http11.py

1 个答案:

答案 0 :(得分:4)

这样的事情:

from scrapy.core.downloader.handlers.http11 import TunnelError


class RetryMiddleware(RetryMiddleware):
    def process_exception(self, request, exception, spider):
        if ( isinstance(exception, self.EXCEPTIONS_TO_RETRY) or isinstance(exception, TunnelError) ) \
                and 'dont_retry' not in request.meta:
            return self._retry(request, exception, spider)

在settings.py中:

DOWNLOADER_MIDDLEWARES = { 
   'myproject.myretry.RetryMiddleware': 200,
   'scrapy.contrib.downloadermiddleware.retry.RetryMiddleware': None
}