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
}
Другие вопросы по тегам