python - 是否保证链式 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 文件会存在。
保证链中的所有任务都在同一个工作节点上运行对我来说已经足够了。是这样吗?
解决方案
不,绝对没有这样的保证。这里有两个解决方案:要么编写一个同时完成所有三件事的任务,要么使用共享文件系统来存储文件。
推荐阅读
- c++ - 从 C++ 中的 JSON 输入创建特定类/子类的新实例的可扩展方式
- python - 获取请求后将python数据作为json对象返回
- python - Python:如何将命名值从 JSON 连接到字符串
- java - 无法从 jar 文件运行 Selenium 测试
- python - 如何将正则表达式应用于 Selenium/Python 中的 xpath?
- tendermint - 如何通过 /subscribe 方法使用 Tendermint websocket 获取历史事件?
- typeorm - TypeORM:使用 getMany() 时如何添加 COUNT 字段
- python - 生成子集集和未使用的元素
- javascript - 满足条件时隐藏 UI 组件
- c - 如何测试二叉树的析构函数?