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

Are chained celery tasks guaranteed to run on the same node worker?

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

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

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

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

在上面的代码中如果plot_results任务和send_to_s3任务运行不同的工人不能保证 png 文件会在那里。

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

不,绝对没有这样的保证。您在这里有两个解决方案:要么编写一个任务来同时完成所有三件事,要么使用共享文件系统来存储您的文件。