【问题标题】:Change number of running spiders scrapyd更改运行蜘蛛的数量scrapyd
【发布时间】:2014-07-26 00:29:55
【问题描述】:

嘿,我的项目中有大约 50 个蜘蛛,我目前正在通过 scrapyd 服务器运行它们。我遇到了一个问题,我使用的一些资源被锁定并导致我的蜘蛛失败或运行速度非常慢。我希望他们能以某种方式告诉scrapyd 一次只有一个正在运行的蜘蛛,并将其余的留在待处理队列中。我在文档中没有看到此配置选项。任何帮助将不胜感激!

【问题讨论】:

  • 你有什么样的共享资源?
  • 我有一个要写入的 sqlite 文件。每隔一段时间我就会收到一个无法连接的错误。此外,我正在使用 phantomjs 和 selenium 来处理动态(javascript)内容。有时 phantomjs 的 GhostDriver 似乎由于竞争条件而被阻止。

标签: python python-2.7 scrapy scrapyd scrapy-spider


【解决方案1】:

这可以通过scrapyd settings 控制。将max_proc 设置为1

max_proc

将启动的最大并发 Scrapy 进程数。

【讨论】:

  • max proc 是否阻止异步发出请求?这就是为什么我没有使用它。我不清楚是否会出现这种情况。这可能是我缺乏理解,后续问题:scrapy 是否真的会产生新的进程或线程来异步处理请求,或者是否有某种扭曲的框架“魔法”使这种情况发生?
  • @rocktheartsm4l 请求无论如何都是异步的,因为引擎盖下是扭曲的。 max_proc 只是有助于一次运行一个蜘蛛。这就是我的理解。蜘蛛之间共享什么样的资源并减慢速度?我认为你需要修复它而不是试图让它在阻塞模式下运行..
  • 回答了上述问题。感谢您的快速回复。
  • @rocktheartsm4l 好的,是的,首先,sqlite 在这里真的不是一个好的选择,因为它会阻止整个数据库的写入。如果您需要经典的关系数据库,请切换到 postgresql 或 mysql 等,如果您需要 NoSQL 解决方案,请切换到 mongodb 或 redis 等。此外,将 phantomjs 问题详细说明为一个单独的问题。谢谢。
  • 感谢您对 sqlite 的深入了解。现在我的项目是一个原型,我只是将 sqlite 文件用作一个虚拟数据库,直到下周我将我的项目连接到真正的数据库。在那之前我只会使用 max_proc = 1 。我将提出一个关于 phantomjs 问题的新问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多