Я запускал искатель в Scrapy для сканирования большого сайта, о котором я бы не упомянул. Я использую учебник паука в качестве шаблона, а затем я создал серию стартовых запросов и пусть ползают оттуда, используя что-то вроде этого:Ошибка памяти Scrapy (слишком много запросов) Python 2.7
def start_requests(self):
f = open('zipcodes.csv', 'r')
lines = f.readlines()
for line in lines:
zipcode = int(line)
yield self.make_requests_from_url("http://www.example.com/directory/%05d" % zipcode)
Для начала, существует более 10 000 таких страниц, то каждый из них очередь из довольно большой директории, из которой еще несколько страниц в очереди и т. д., и, похоже, похоже, что в режиме scrapy остается «неглубокий», накапливая запросы, ожидающие в памяти, вместо того, чтобы пробираться через них, а затем выполнять резервное копирование.
Результатом этого является повторяющимся большое исключение, которое заканчивается так:
File "C:\Python27\lib\site-packages\scrapy\utils\defer.py", line 57, in <genexpr>
work = (callable(elem, *args, **named) for elem in iterable)
--- <exception caught here> ---
File "C:\Python27\lib\site-packages\scrapy\utils\defer.py", line 96, in iter_errback
yield next(it)
..... (количество строк) .....
File "C:\Python27\lib\site-packages\scrapy\selector\lxmldocument.py", line 13, in _factory
body = response.body_as_unicode().strip().encode('utf8') or '<html/>'
exceptions.MemoryError:
довольно быстро, в течение часа или около того от искателя, который должен занять несколько дней, исполняемые воздушные шары python до 1.8gigs и Scrapy больше не будут функционировать (продолжая стоить мне , многие потратили впустую доллары за счет платы за использование прокси!).
Есть ли способ получить Scrapy для удаления или экзеризации или повторного использования (я даже не знаю правильных слов) сохраненных запросов, чтобы предотвратить такую проблему с памятью?
(Я не очень разбираюсь в программировании, кроме как объединить то, что я вижу здесь или в документах, поэтому я не имею возможности для устранения неполадок под капотом, так сказать, я также не смог установить полный python/django/scrapy как 64-бит на W7, после нескольких дней попыток и чтения.)
Не устанавливайте параметры CONCURRENT_ITEMS слишком высоко. Я установил его на 60 000, и я тоже получил MemoryError. Вы добавляли какие-либо настройки при параллелизме? –