Scrapy + Celery 我需要的更多任务

Scrapy + Celery more tasks I needed

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

我在 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()

我通过 --max-tasks-per-child 1 修复了它。

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