Python 芹菜链任务执行顺序混乱

Python 芹菜链任务执行顺序混乱,python,celery,django-celery,Python,Celery,Django Celery,我将向芹菜工人发送一系列三项任务。第一个和第三个被添加到队列“filestore”,该队列由worker A提供服务。第二个被添加到队列“cloud”,该队列由worker B提供服务 我想要的行为是让这三个任务依次执行 我看到的行为是工作人员A执行任务1,然后执行任务3,然后工作人员B执行任务2 result = app.send_task( "workerTasks_filestore.task_upload_scan_to_s3", args

我将向芹菜工人发送一系列三项任务。第一个和第三个被添加到队列“filestore”,该队列由worker A提供服务。第二个被添加到队列“cloud”,该队列由worker 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),
                        ]
)

我做错了什么?

您是否尝试使用芹菜的chain类

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

你如何衡量执行时间?我正在观察这两个过程。A显然在B空闲时执行1和3,然后B占用2。唉,如果你不能在队列之间链接,那将是一个真正的痛苦!工人A是否使用队列在任务1和任务3之间发送和接收消息?恐怕我不知道你的确切意思-我不是故意在任务之间“通信”的。谢谢-我假设我不能在没有访问生产者上的任务功能的情况下使用它,但我看到你可以使用签名!再次感谢。