python - 链式 celery 任务是否保证在同一节点工作线程上运行?

标签 python django rabbitmq celery

链式 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/

相关文章:

python 在加载模块时捕获 NameError

Python - Folium Choropleth map - 颜色不正确

python - 在 Django 中创建自定义命令

celery worker 的 rabbitmq 循环消耗

python - Celery AsyncResult 的 task_method

python - pyjade radio 输入文本未显示

python - BeautifulSoup - 替换字符串不起作用

python - 500错误: null value in column "timeline_id" violates not-null constraint

使用 nose、django-nose 和 selenium 卡住 Django 测试

java - 如果使用 spring + stomp + 带有rabbitmq的完整代理,如何自动删除队列