Я использую Scrapy-splash
, и у меня проблема с памятью. Я ясно вижу, что память, используемая docker
python3
, постепенно увеличивается, пока компьютер не зависнет.
Не могу понять, почему он так себя ведет, потому что у меня CONCURRENT_REQUESTS=3
, и нет способа, чтобы 3 HTML
потребляло 10 ГБ ОЗУ.
Таким образом, существует обходной путь для установки maxrss
на некоторое разумное значение. Когда использование ОЗУ имеет это значение, докер перезапускается, поэтому ОЗУ сбрасывается.
Но проблема в том, что пока docker
не работает, scrapy
продолжает отправлять запросы, так что есть пара urls
, которые не были очищены. Промежуточное ПО Retry пытается повторить эти запросы прямо сейчас, а затем сдаться.
[scrapy.downloadermiddlewares.retry] DEBUG: Retrying <GET https://www.ex.com/eiB3t/ via http://127.0.0.1:8050/execute> (failed 2 times): [<twisted.python.failure.Failure twisted.internet.error.ConnectionDone: Connection was closed cleanly.>]
2019-03-30 14:28:33 [scrapy.downloadermiddlewares.retry] DEBUG: Gave up retrying <GET https://www.ex.com/eiB3t/
Итак, у меня два вопроса
- Знаете ли вы лучшее решение?
- Если нет, как я могу установить запрос
Scrapy
на retry
через некоторое время (скажем, в минуту, чтобы docker
успел перезапуститься)?