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 运行 几个任务?
我的统计日志比芹菜任务成功的日志多,为什么?这是否意味着我的一些旧任务没有被杀死?
我在 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 运行 几个任务?