Scrapy: 1) Что душит паука 2) Как удалить устаревшие объекты запроса? - PullRequest
3 голосов
/ 30 сентября 2019

Я понимаю, что на этот вопрос сложно ответить, не зная, что такое полный код.

Вот сводка кода:

  • Запускается с большим количеством стартовых URL-адресов
  • Сохраняет некоторые данные в метаданные
  • ИмеетГлобальная словарная переменная, инициированная с текущим временем
  • Следит за всеми ссылками, которые находятся в одном домене
  • Проверяет текущее время с временем инициации и не следует, когда разница слишком велика. В некоторых доменах слишком много ссылок ( Как ограничить объекты запросов scrapy? )

Но в целом, что вызывает такую ​​негладкую кривую для запросов? У меня не так много обработки, поэтому я подумал бы, что они будут делать столько запросов, сколько разрешено при одновременных запросах. Кроме того, я установил одновременные запросы на 256 и запрос на IP = 1, поэтому не должно быть из-за какого-либо конкретного веб-сайта. Другая интересная вещь - это начинается быстро и замедляется. Это я могу понять, так как медленные запросы дольше остаются в системе и снижают среднее значение.

Любые мысли приветствуются.

enter image description here

[scrapy.crawler] Overridden settings: {'AUTOTHROTTLE_ENABLED': True, 'BOT_NAME': 'stack', 'CONCURRENT_REQUESTS': 256, 'CONCURRENT_REQUESTS_PER_DOMAIN': 1, 'CONCURRENT_REQUESTS_PER_IP': 1, 'DEPTH_LIMIT': 3, 'DEPTH_PRIORITY': 1, 'DOWNLOAD_DELAY': 1, 'LOG_ENABLED': False, 'LOG_LEVEL': 'INFO', 'MEMUSAGE_LIMIT_MB': 950, 'NEWSPIDER_MODULE': 'stack.spiders', 'REACTOR_THREADPOOL_MAXSIZE': 30, 'SCHEDULER_DISK_QUEUE': 'scrapy.squeues.PickleFifoDiskQueue', 'SCHEDULER_MEMORY_QUEUE': 'scrapy.squeues.FifoMemoryQueue', 'SPIDER_MODULES': ['stack.spiders'], 'STATS_CLASS': 'sh_scrapy.stats.HubStorageStatsCollector', 'TELNETCONSOLE_HOST': '0.0.0.0',}

Обновление Я попытался установить параллельный запрос на inf, и это решило проблему линейности, но создало вторичную проблему.

На основании этого обновления становится более очевидным, что душит паука?

Однако теперь запланированные запросы превышают фактические запросы примерно на 20%, что приводит к увеличению использования памяти по мере продолжения программы. Есть ли способ удалить устаревшие объекты запроса, чтобы использование памяти не увеличивалось со временем?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...