2012-02-06 138 views
6

我正在运行Scrapyd,并且在同时启动4个蜘蛛时遇到一个奇怪的问题。Scrapy的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解决它改变timer = TimerService(5, poller.poll)线30

timer = TimerService(0.1, poller.poll)

编辑: 有关配置设置由AliBZ下面的评论是一种更好的方式来改变轮询频率。

+2

根据[scrapyd](https://github.com/scrapy/scrapyd/blob/master/scrapyd/app.py),您可以将'poll_interval = 0.1'添加到位于'/ etc/tracesyd的您的scrapyd配置文件中/ conf.d/000-default'。 – AliBZ 2014-03-29 18:48:58

4

从我的使用scrapyd的经验来看,它不会立即运行蜘蛛,因为你安排了一个蜘蛛。它通常会等待一会,直到当前的蜘蛛启动并运行,然后启动下一个蜘蛛进程(scrapy crawl)。

因此,瑞德依德一个接一个地启动流程,直到达到max_proc计数。

从你的日志中我看到你的每个蜘蛛运行约1秒钟。我想,如果他们跑至少30秒,你会看到所有的蜘蛛都在运行。

+0

是的;这就是我注意到的。我已经实施了一个subprocess.Popen调用立即刮,因为结果立即显示。我希望能以某种方式加快Scrapyd的调度程序:) – 2012-02-07 09:36:09

+0

我认为这是合理的,这正是scrapyd目前所做的。它不想让系统超载,同时启动许多蜘蛛 - 它不知道你计划运行的蜘蛛是重的还是轻的。这就是为什么它会一个接一个地运行蜘蛛。你可以学习维基代码,也许你会发现有些东西需要调整。如果您发现有用的答案,请注册。 – warvariuc 2012-02-07 12:00:36