芹菜-顺序执行的连锁任务

时间:2019-06-05 13:26:56

标签: python celery django-celery

我正在向芹菜工人发送一连串的三个任务。第一个和第三个添加到由工作者A服务的队列“文件存储”。第二个和第三个添加到由工作者B服务的队列“云”。

我想要的行为是要依次执行三个任务。

我所看到的是工人A完成任务1,然后执行任务3,然后工人B完成任务2。

result = app.send_task(
                        "workerTasks_filestore.task_upload_scan_to_s3", args=[scan.scan_name], queue='filestore',
                        chain=[
                            Signature('workerTasks.do_processing_task', args=[scan.scan_name, spd_name], queue=queue, immutable=True),
                            Signature('workerTasks_filestore.task_download_scan_from_s3', args=[scan.scan_name], queue='filestore', immutable=True),
                        ]
)

我在做什么错了?

1 个答案:

答案 0 :(得分:1)

您尝试使用celery的链条类吗?

from celery import chain, Signature

chained_tasks = chain([
    Signature('workerTasks_filestore.task_upload_scan_to_s3', args=(scan.scan_name,), queue='filestore'),
    Signature('workerTasks.do_processing_task', args=(scan.scan_name, spd_name,), queue=queue, immutable=True),
    Signature('workerTasks_filestore.task_download_scan_from_s3', args=(scan.scan_name,), queue='filestore', immutable=True)
])

result = chained_tasks.apply_async()