我运行的是scrapyd1.1+scrapy0.24.6和一个“seleniumscrapyhybrid”蜘蛛,它根据参数在多个域上爬行。 承载scrapyd实例的开发机器是一个OSX Yosemite 4核,这是我当前的配置:
[scrapyd]
max_proc_per_cpu = 75
debug = on
scrapyd启动时输出:
^{pr2}$芯数:
python -c 'import multiprocessing; print(multiprocessing.cpu_count())'
4
我想设置为一个蜘蛛同时处理300个作业,但scrapyd一次处理1到4个作业,而不管有多少作业等待处理:
CPU使用率并不高:
我也在ubuntu14.04vm上测试过这个场景,结果大致相同:执行时最多运行5个作业,没有压倒性的CPU消耗,差不多在相同的时间内执行相同数量的任务。在
日志显示您最多允许300个进程。因此,限制在链条的上游。我最初的建议是您的项目的序列化,如Running multiple spiders using scrapyd所述。在
随后的调查显示,限制因素实际上是投票间隔。在
我的问题是我的作业持续的时间比默认值POLL_INTERVAL短,即5秒,因此在前一个任务结束之前没有足够的任务被轮询。将此设置更改为低于爬网程序作业平均持续时间的值将有助于scrapyd轮询更多的作业以供执行。在
相关问题 更多 >
编程相关推荐