链式芹菜任务是否可以保证在同一个节点工作器上运行?

时间:2018-06-01 11:42:19

标签: python django rabbitmq celery

链式芹菜任务是否保证在同一个节点工作器上运行?

我知道我可以为专用任务构建队列,但是我的任务链涉及创建需要发送到S3的png文件。 png文件的创建是链中的一个不同任务,因此如果它们在不同的工作程序中运行,则下一个任务可能找不到png文件。

我不想为它构建一个单独的队列,因为否则我需要在该特定队列中运行所有任务而不是其他任何队列。

 result = (process_diode.s() | plot_results.s() | send_to_s3.s()).apply_async()

在上面的代码中,如果 plot_results 任务和 send_to_s3 任务在不同的工作程序中运行,则不能保证png文件将在那里。

保证链中的所有任务在同一个工作节点中运行对我来说已经足够了。是这样的吗?

1 个答案:

答案 0 :(得分:3)

不,绝对没有这样的保证。这里有两个解决方案:编写一个可以同时执行所有三项操作的任务,或者使用共享文件系统来存储文件。