链式 celery 任务是否保证在同一节点工作线程上运行?
我知道我可以为专用任务构建一个队列,但是我的任务链涉及创建需要发送到 S3 的 png 文件。 png 文件的创建是链中的不同任务,因此如果它们在不同的工作线程中运行,则下一个任务可能找不到 png 文件。
我不想为其构建一个单独的队列,因为否则我需要运行该特定队列中的所有任务,而不是其他地方。
result = (process_diode.s() | plot_results.s() | send_to_s3.s()).apply_async()
在上面的代码中,如果 plot_results 任务和 send_to_s3 任务在不同的工作线程中运行,则不能保证 png 文件会在那里。
保证链内的所有任务都在同一个工作节点中运行对我来说就足够了。是这样吗?
最佳答案
不,绝对没有这样的保证。这里有两种解决方案:要么编写一个任务来同时完成所有三件事,要么使用共享文件系统来存储文件。
关于python - 链式 celery 任务是否保证在同一节点工作线程上运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50642661/