芹菜和蜘蛛

2024-10-05 12:18:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用scrapy,我试图用芹菜在一台机器上管理多个蜘蛛。我遇到的问题是(有点难以解释),spider会成倍增加->;这意味着如果我的第一个spider启动,而我启动了第二个spider,那么第一个spider将执行两次。在

请在此处查看我的代码:

在处理作业.py在

class ProcessJob():
    def processJob(self, job):
        #update job
        mysql = MysqlConnector.Mysql()
        db = mysql.getConnection();
        cur = db.cursor(); 
        job.status = 1
        update = "UPDATE job SET status=1 WHERE id=" + str(job.id)
        cur.execute(update)
        db.commit()
        db.close()

        #Start new crawler
        configure_logging()
        webspider = spider.MySpider;   
        if job.ajax == 1:
            webspider.custom_settings = CrawlerSettings.ajax_settings;
        else:
            webspider.custom_settings = CrawlerSettings.normal_settings;
        crawler = UrlCrawlerScript(webspider, job)
        crawler.start()
        crawler.join()
        reactor.stop(0)


class UrlCrawlerScript(Process):
    def __init__(self, spider, job):
        Process.__init__(self)
        self.crawler = CrawlerRunner()
        self.crawler.crawl(spider, job=job)  

    def run(self):
        d = self.crawler.join()
        d.addBoth(lambda _: reactor.stop())       
        reactor.run(0)

还有蜘蛛:

^{pr2}$

它的作用是: 我从我的数据库中检索新的工作(不是在这里的代码中-会有点太多)。然后我要处理它们(运行一个蜘蛛)。正如我所说,问题是当我一次执行两个作业时,第一个spider会“加倍”(因此并行执行两次)。在

有什么建议吗?反应堆可能又出问题了:(


Tags: 代码selfdbsettingsdef作业mysqljob

热门问题