【发布时间】:2015-06-05 17:56:12
【问题描述】:
上下文
我正在运行 scrapyd 1.1 + scrapy 0.24.6 和一个“selenium-scrapy 混合”蜘蛛,它根据参数在许多域中爬行。 托管 scrapyd 实例的开发机器是具有 4 个内核的 OSX Yosemite,这是我当前的配置:
[scrapyd]
max_proc_per_cpu = 75
debug = on
scrapyd 启动时的输出:
2015-06-05 13:38:10-0500 [-] Log opened.
2015-06-05 13:38:10-0500 [-] twistd 15.0.0 (/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python 2.7.9) starting up.
2015-06-05 13:38:10-0500 [-] reactor class: twisted.internet.selectreactor.SelectReactor.
2015-06-05 13:38:10-0500 [-] Site starting on 6800
2015-06-05 13:38:10-0500 [-] Starting factory <twisted.web.server.Site instance at 0x104b91f38>
2015-06-05 13:38:10-0500 [Launcher] Scrapyd 1.0.1 started: max_proc=300, runner='scrapyd.runner'
编辑:
核心数:
python -c 'import multiprocessing; print(multiprocessing.cpu_count())'
4
问题
我想要一个设置为单个蜘蛛同时处理 300 个作业,但无论有多少作业待处理,scrapyd 一次处理 1 到 4 个:
编辑:
CPU 使用率并不高:
在 UBUNTU 上测试
我也在 Ubuntu 14.04 VM 上测试过这个场景,结果大致相同:执行时最多运行 5 个作业,没有过多的 CPU 消耗,或多或少相同的时间来执行相同数量的任务。
【问题讨论】:
-
您能否检查一下多处理模块是否正确计算了您的 CPU 内核数?此命令应打印 4:
python -c 'import multiprocessing; print(multiprocessing.cpu_count())' -
@elias 4 确实,我还会在帖子中添加处理器使用情况
-
您可以从日志中看到最多允许 300 个进程,所以我怀疑您在其他地方遇到了瓶颈。您是否因scrapyd 在项目中一次只安排一个蜘蛛的事实而苦恼?见stackoverflow.com/questions/11390888/…
-
@PeterBrittain 我在相关问题中找到了解决方案的线索,它是 POLL_INTERVAL ,想要赏金吗?
-
谢谢!如果你提供,我不会在我的会员资格的这个阶段拒绝它......我现在会发布答案。
标签: python scrapy twisted scrapyd