【发布时间】:2020-10-21 04:59:47
【问题描述】:
我使用多个 post_save 函数来触发不同的 celery(4.4.0、4.8.3)任务并尝试了 Django 2 和 3。出于某种奇怪的原因,celery 停止并行执行所有任务,而是每次模型被接收时只收到一个任务保存。其他任务甚至都没有收到。
要运行所有任务,我必须多次保存模型。它以前工作过,我不知道为什么行为突然改变了。
我开始排队:
celery -A appname worker -l info -E
我的帖子保存功能:
@receiver(models.signals.post_save, sender=RawFile)
def execute_rawtools_qc(sender, instance, created, *args, **kwargs):
rawtools_qc.delay(instance.path, instance.path)
@receiver(models.signals.post_save, sender=RawFile)
def execute_rawtools_metrics(sender, instance, created, *args, **kwargs):
rawtools_metrics.delay(instance.abs_path, instance.path)
还有我的任务:
@shared_task
def rawtools_metrics(raw, output_dir):
cmd = rawtools_metrics_cmd(raw=raw, output_dir=output_dir)
os.system(cmd)
@shared_task
def rawtools_qc(input_dir, output_dir):
cmd = rawtools_qc_cmd(input_dir=input_dir, output_dir=output_dir)
os.system(cmd)
在保存模型后立即并行执行的那些任务之前。现在,第一个任务在模型实例保存时执行,第二个实例在模型第二次保存时执行。然后功能每次交替。知道什么可能导致这种奇怪的行为吗?
更新:我认为这两个任务都是随机执行的,但每次保存只有一个。
此外,没有其他芹菜工人在运行。
【问题讨论】:
标签: django celery django-celery