Таймауты Scrapy и Twisted.Internet.Error - PullRequest
0 голосов
/ 20 января 2019

Запуск Scrapy с прокси, но бывают случаи, когда сканирование сталкивается с ошибками, приведенными ниже, в конце цикла и приводит к тому, что время окончания сканирования задерживается на 10+ секунд.Как я могу сделать так, чтобы, если Scrapy сталкивался с этими ошибками в любой момент, он игнорировался / пропускался полностью и немедленно при обнаружении, чтобы не тратить время на остановку всего гусеничного механизма?

RETRY_ENABLED = False (Установите в settings.py уже.)

Список URL в запросе.Многие прокси, настроенные на https: //, а не на http, хотели упомянуть incase, хотя почти во всех случаях работает https, поэтому я сомневаюсь, что это строго по https против http.

Но все равно получим:

Ошибка 1:

  • 2019-01-20 20:24:02 [scrapy.core.scraper] ОТЛАДКА: Вычеркнуто из <200>
  • ------------ 8 секунд потрачено ------------------
  • 2019-01-20 20:24:10 [scrapy.proxies]ИНФОРМАЦИЯ: Удаление сбойного прокси
  • 2019-01-20 20:24:10 [scrapy.core.scraper] ОШИБКА: Ошибка при загрузке
  • Traceback (последний последний вызов):
  • Файл "/usr/local/lib64/python3.7/site-packages/scrapy/core/downloader/middleware.py", строка 43, в process_request defer.returnValue ((выдает download_func (request = request, spider = spider)))
  • scrapy.core.downloader.handlers.http11.TunnelError: Не удалось открыть туннель CONNECT с прокси ukimportantd2.fogldn.com:10492 [{'status': 504, 'reason': b'GatewayТайм-аут '}]

Ошибка 2:

  • 2019-01-20 20:15:46 [scrapy.proxies] ИНФОРМАЦИЯ: Удаление сбойного прокси
  • 2019-01-20 20:15:46 [scrapy.core.scraper] ОШИБКА: Ошибка загрузки
  • ------------ 12 секунд потрачено ------------------
  • 2019-01-20 20:15:58 [scrapy.core.engine] ИНФОРМАЦИЯ: Закрытие паука (завершено)
  • Отслеживание (последний последний вызов):
  • File "/usr/local/lib64/python3.7/site-packages / scrapy / core / downloader / middleware.py ", строка 43, в process_request defer.returnValue ((yield download_func (request = request, spider = spider)))
  • twisted.web._newclient.ResponseNeverReceived: [twisted.python.failure.Failure twisted.internet.error.ConnectionLost: Соединение с другой стороной было потеряно не чистым способом: соединение потеряно.]

Ошибка 3:

  • Трассировка (последний последний вызов):
  • Файл "/usr/local/lib64/python3.7/site-packages/scrapy/core/downloader/middleware.py", строка43, в process_request defer.returnValue ((выдает download_func (request = request, spider = spider)))
  • twisted.web._newclient.ResponseNeverReceived: [twisted.python.failure.Failure twisted.internet.error.ConnectionLost: потеря связи с другой стороной потеряна.] *

1 Ответ

0 голосов
/ 21 января 2019

Как я могу сделать так, чтобы, если Scrapy сталкивался с этими ошибками в любой момент, он игнорировался / пропускался полностью и немедленно при обнаружении

Это уже так. Прокси-серверы либо вызывают ошибку через несколько секунд, а не мгновенно, либо напрямую отключаются.

Если вы не желаете ждать, вы можете уменьшить значение DOWNLOAD_TIMEOUT, но ответы, которые раньше занимали много времени, но работа может начать отсрочиваться.

Лучшим подходом может быть переключение на лучшие прокси или использование интеллектуального прокси (например, Crawlera ).

...