2012-02-06 3 views
6

Я запускаю Scrapyd и сталкиваюсь со странной проблемой при запуске 4 пауков одновременно.Scrap 's Scrapyd слишком медленный с планировщиками пауков

2012-02-06 15:27:17+0100 [HTTPChannel,0,127.0.0.1] 127.0.0.1 - - [06/Feb/2012:14:27:16 +0000] "POST /schedule.json HTTP/1.1" 200 62 "-" "python-requests/0.10.1" 
2012-02-06 15:27:17+0100 [HTTPChannel,1,127.0.0.1] 127.0.0.1 - - [06/Feb/2012:14:27:16 +0000] "POST /schedule.json HTTP/1.1" 200 62 "-" "python-requests/0.10.1" 
2012-02-06 15:27:17+0100 [HTTPChannel,2,127.0.0.1] 127.0.0.1 - - [06/Feb/2012:14:27:16 +0000] "POST /schedule.json HTTP/1.1" 200 62 "-" "python-requests/0.10.1" 
2012-02-06 15:27:17+0100 [HTTPChannel,3,127.0.0.1] 127.0.0.1 - - [06/Feb/2012:14:27:16 +0000] "POST /schedule.json HTTP/1.1" 200 62 "-" "python-requests/0.10.1" 
2012-02-06 15:27:18+0100 [Launcher] Process started: project='thz' spider='spider_1' job='abb6b62650ce11e19123c8bcc8cc6233' pid=2545 
2012-02-06 15:27:19+0100 [Launcher] Process finished: project='thz' spider='spider_1' job='abb6b62650ce11e19123c8bcc8cc6233' pid=2545 
2012-02-06 15:27:23+0100 [Launcher] Process started: project='thz' spider='spider_2' job='abb72f8e50ce11e19123c8bcc8cc6233' pid=2546 
2012-02-06 15:27:24+0100 [Launcher] Process finished: project='thz' spider='spider_2' job='abb72f8e50ce11e19123c8bcc8cc6233' pid=2546 
2012-02-06 15:27:28+0100 [Launcher] Process started: project='thz' spider='spider_3' job='abb76f6250ce11e19123c8bcc8cc6233' pid=2547 
2012-02-06 15:27:29+0100 [Launcher] Process finished: project='thz' spider='spider_3' job='abb76f6250ce11e19123c8bcc8cc6233' pid=2547 
2012-02-06 15:27:33+0100 [Launcher] Process started: project='thz' spider='spider_4' job='abb7bb8e50ce11e19123c8bcc8cc6233' pid=2549 
2012-02-06 15:27:35+0100 [Launcher] Process finished: project='thz' spider='spider_4' job='abb7bb8e50ce11e19123c8bcc8cc6233' pid=2549 

У меня уже есть эти настройки для Scrapyd:

[scrapyd] 
max_proc = 10 

Почему не работает Scrapyd пауков в то же время, так быстро, как они запланированы?

ответ

7

Я решил его редактирование scrapyd/app.py на линии 30.

Изменено timer = TimerService(5, poller.poll) к timer = TimerService(0.1, poller.poll)

EDIT: Ниже замечание AliBZ относительно параметров конфигурации является лучшим способом изменить частота опроса.

+2

Согласно [scrapyd] (https://github.com/scrapy/scrapyd/blob/master/scrapyd/app.py), вы можете добавить 'poll_interval = 0.1' в свой конфигурационный файл scrapyd, расположенный по адресу'/etc/scrapyd/conf.d/000-default'. – AliBZ

4

Из моего опыта с scrapyd, он не запускает паука сразу, как вы планируете один. Обычно он немного ждет, пока текущий паук не встанет и не запустится, затем он начнет следующий процесс паука (scrapy crawl).

Итак, scrapyd запускает процессы один за другим, пока не достигнут max_proc.

Из вашего журнала я вижу, что каждый из ваших пауков работает около 1 секунды. Я думаю, вы увидите, что все ваши пауки работают, если они будут работать не менее 30 секунд.

+0

Да; вот что я заметил. Я выполнил вызов subprocess.Popen для мгновенного удаления, так как результаты будут отображаться мгновенно. Я надеялся ускорить планировщик Scrapyd как-то :) –

+0

Я думаю, что логично, что scrapyd в настоящее время делает. Он не хочет перегружать систему, запуская много пауков одновременно - он не знает, является ли паук, который вы планируете запускать, тяжелым или легким. Вот почему он запускает пауков один за другим. Вы можете изучить код scrapyd, и, возможно, вы найдете что-то, что нужно настроить. Если вы найдете ответ полезным, пожалуйста, воздержитесь. – warvariuc