python - 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()
解决方案
我修复了它--max-tasks-per-child 1
。
谁能解释为什么没有这个 arg celery 运行几个任务?
推荐阅读
- python - 是否有图书馆或建议的策略来安排工作时间和休息时间?
- javascript - 为什么 axios.get 没有返回承诺
- angular - Angular 8:上传文件
- r - 提取一系列网格单元
- firebase - 在 Firebase 实时数据库中自定义 ID
- python - 为什么裁剪后的图像颜色会变深?
- scala - 如何让 IntellijIdea 识别我的 build.sc 文件中的语法?
- javascript - 谷歌表格:“如果项目“缺货”,则从数据验证列表中删除项目
- identityserver4 - 使用带有 AddLocalApiAuthentication 的自定义端点添加声明
- arrays - Autohotkey,如何在数组的值内循环变量的值