使用scrapyd为每个启动URL运行新作业(运行)

时间:2015-05-16 10:59:33

标签: python scrapy multiprocessing scrapyd

我有两个独立的蜘蛛......

  1. Spider 1将从HTML页面

  2. 获取URL列表
  3. Spider 2将使用之前蜘蛛中的已删除网址作为“开始网址” 并开始抓页

  4. ..现在我想要做的是......我正试图以一种方式安排它......每隔一小时左右......我想要并行开启所有蜘蛛2网址,同时

    我已经将它部署在scrapyD上,并将start_url从python脚本传递给每个已部署的蜘蛛作为参数。比如

    for url in start_urls:
    r = requests.post("http://localhost:6800/schedule.json",
                      params={
                          'project': 'project',
                          'spider': 'spider',
                          'start_urls': url
                      })
    

    并在蜘蛛内部,从kwargs读取此参数start_urls并将其分配给Start_urls

    但我注意到的事情是,当我使用for循环将多个URL传递给同一部署的蜘蛛时,它永远不会并行运行

    在任何时间点只有一个作业正在运行,其他作业处于待定状态(未运行)

    报废和服务设置默认情况下仅在两个设置后更改

    max_proc    = 100
    max_proc_per_cpu = 25
    

    我如何实现,接近使用python-scrapy-scrapyd

    的真正并行性

    或者我必须使用python-multi processing-pool-apply_async或其他一些解决方案

0 个答案:

没有答案
相关问题