Size: a a a

2021 June 01

MZ

Marsel Ziatdinov in Scrapy
Я храню данные в обычном списке. Из него уже передаю в другой паук
источник

G

Georgiy in Scrapy
В ответе на мой вопрос @sm_sergei о проблемах с памятью ничего не упоминал. Поэтому я считаю, что подключение ProgressBar extension с другого пулл реквеста будет достаточно.
источник

МС

Михаил Синегубов... in Scrapy
Список физически где?
По идее, если он где то вне пауков, то можно последовательно выполнить.
Либо две процедуры в скрипте, из под которого запускаешь пауков. Одна запускает 9 пауков, вторая - последний обработчик.
Наверное, сработает
источник

МС

Михаил Синегубов... in Scrapy
А при чем тут проблемы с памятью?
Или ты про "всосать 10 гиг в память"?
источник

G

Georgiy in Scrapy
При скачивании единичного файла с размером 300Mb - scrapy понадобится дополнительно выделить x3 памяти (в данном случае +900Mb, а вовсе не 10гиг). Да это тоже много, но этого может быть явно недостаточно, что бы положить процесс.
источник

AV

Anatoli Valenda in Scrapy
Всем ку. Немного туповатый вопрос. Как прервать функцию при определенном условии?
if a==b:
   return 0
А если мы используем yield? То есть, при определенном условии мне айтем возвращать не нужно, а нужно делать следующий реквест.
источник

AR

Andrey Rahmatullin in Scrapy
yield request
return
источник

AV

Anatoli Valenda in Scrapy
просто не хочется делать кучу вложенных условий. Код будет нечитабельный  и убогий
источник

AV

Anatoli Valenda in Scrapy
ага, а если ничего yield-ить не нужно
yield None
return
источник

AV

Anatoli Valenda in Scrapy
так?
источник

МС

Михаил Синегубов... in Scrapy
просто ретурн и все
источник

AR

Andrey Rahmatullin in Scrapy
если ничего yield-ить не нужно то ничего и не yield-и
источник

MZ

Marsel Ziatdinov in Scrapy
Да, это понятно. Получается, что на каждой итерации мне надо запускать CrawlerProcess() или CrawlerRunner() 2 раза, но ни один ни другой не получается. Первый из-за  twisted.internet.error.ReactorNotRestartable. Второй, непонятно что делать с реактором, так как пока его не закроешь, он не отдаст управление. А если закрыть, то потом не запустить ещё раз
источник

МС

Михаил Синегубов... in Scrapy
я утрировано говорил, именно про то, что файл в памяти размещается.
я не всматривался в ПР по скачиванию большого файла, но, для него надо response как то отключать/кастрировать. Прогресс - это вообще про другое, там экстеншен встраивается до респонса...
источник

МС

Михаил Синегубов... in Scrapy
тогда последовательно запусти :))
источник

МС

Михаил Синегубов... in Scrapy
сек
источник

AV

Anatoli Valenda in Scrapy
я тут вспомнил, это в пайтоне, если ничего не возвращаешь, то функция автоматом return None делает?
источник

AR

Andrey Rahmatullin in Scrapy
да
источник

AV

Anatoli Valenda in Scrapy
все, я понял. Спасибо. Направление понятно, дальше сам разберусь. Всем спасибо
источник

МС

Михаил Синегубов... in Scrapy
    runner = CrawlerRunner(settings=settings)

   @defer.inlineCallbacks
   def crawl():
       for my_class in classes:
           if my_class.name in alloved_spiders:
               logger.info('{} - spider started'.format(my_class.name))
               yield runner.crawl(my_class, data_parse=data_parse)
               logger.info('{} - spider finished'.format(my_class.name))
       reactor.stop()
   if alloved_spiders:
       crawl()
       reactor.run()

выкусал из проекта, пауки один за другим работают

не скажу что прям все правильно, но всеж
источник