Scrapyd Retry, если Errback в витой отсрочке / Не удалось открыть туннель CONNECT Ошибка
Я работаю с циклом прокси в Scrapy, иногда некоторые прокси имеют ошибки, и это останавливает мой паук. Ошибка: "Не удалось открыть туннель CONNECT". Как изменить код, чтобы повторить попытку с другим прокси в случае этой ошибки?
Вот код, который необходимо изменить: https://github.com/scrapy/scrapy/blob/master/scrapy/core/downloader/handlers/http11.py
1 ответ
Решение
Что-то вроде этого:
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
}