Дросселирование загрузчика Scrapy при сбоях / игнорировании - PullRequest
0 голосов
/ 06 августа 2020

У меня возникла проблема, при которой загрузчик вызывает проблемы с памятью моего паука. В частности, происходит то, что в очередь одновременно добавляются несколько URL-адресов, которые запрещены файлом robots.txt для этого домена. Когда встречается этот «кусок» запрещенных URL-адресов, загрузчик перебирает их так быстро, что объекты запроса не освобождаются, что приводит к очень быстрому переполнению памяти.

Чтобы определить это, я переопределяю промежуточное ПО robots.txt для вывода ссылок в реальном времени по каждому встреченному запросу:

2020-08-06 11:42:29 [scrapy.downloadermiddlewares.robotstxt] DEBUG: Forbidden by robots.txt: <GET https://www.amazon.com/gp/video/search/ref=atv_dp_pd_sup?phrase=Sharrieff%20Pugh&ie=UTF8>
Live References

TestSpider             1   oldest: 17s ago
Request                          4481   oldest: 12s ago
TextResponse                        1   oldest: 12s ago

Это последняя печать после постановки в очередь ~ 4,4 тыс. URL-адресов, заблокированных robots.txt.

Интересно, есть ли там - это способ, отличный от специального промежуточного программного обеспечения, для регулирования загрузчика аналогично плагину автоматического регулирования, который регулирует задержку в зависимости от определенных условий. В настоящее время кажется, что единственные параметры дросселирования в загрузчике предназначены для всех запросов. Также кажется, что может не быть сигнала для загрузки, которая была прервана, поэтому я не уверен, есть ли простой способ подключиться к нему для пользовательских целей дросселирования.

Любые мысли или идеи будут будем очень признательны!

...