首页 > 解决方案 > Scrapy + Celery 我需要的更多任务

问题描述

我的统计日志比成功完成 celery 任务的日志多,为什么?这是否意味着我的一些旧任务没有被杀死?

我在 celery worker 日志文件中有以下 8 条日志行:

Task track_new_items[<id>] succeeded in <time>s: None

但我有以下 19 行:

[scrapy.statscollectors] INFO: Dumping Scrapy stats:
<stats_dict>

每次蜘蛛关闭时都会发送此日志。

我通过以下代码运行我的任务:

from billiard.context import Process
from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings


class CrawlerScript:
    def __init__(self, settings=None):
        if settings is None:
            settings = get_project_settings()
        self.crawler = CrawlerProcess(settings)

    def _crawl(self):
        self.crawler.start()
        self.crawler.stop()

    def crawl(self, spider_cls, *args, **kwargs):
        self.crawler.crawl(spider_cls, *args, **kwargs)

    def run(self):
        p = Process(target=self._crawl)
        p.start()
        p.join()

@shared_task()
def track_new_items():
    crawler = CrawlerScript()
    crawler.crawl(<spider>)
    crawler.run()

标签: pythonscrapycelery

解决方案


我修复了它--max-tasks-per-child 1

谁能解释为什么没有这个 arg celery 运行几个任务?


推荐阅读