请问 celery 怎么任务调另一个任务

2023-08-01 23:45:03 +08:00
 llsquaer
现在有 10 台机器,其中 7 台执行 A 任务 ,3 台执行 B 任务。要求是 A 任务运行完毕丢给 B 任务按照顺序执行。

比如 A1 A3 A7 做完了,然后 B1 B2 B3 执行, 其他 A 做完下次来任务了,还是 B1 B2 B3 顺序来做。


请教下,谢谢
1053 次点击
所在节点    Python
5 条回复
fenglangjuxu
2023-08-02 09:16:13 +08:00
有个曲线救国的方案 每个任务执行前检测它的前置完成没,没有完成就等。

执行完成的写入 redis 。
Akkuman
2023-08-02 09:20:38 +08:00
1. 可以使用 celery 的任务链
2. 正常在 worker 函数里面调用 delay ,会报错,然后按照提示修改下配置即可
UN2758
2023-08-02 11:29:58 +08:00
没太看懂,B1 严格依赖 A1 类型的任务还是简单的 B 类型依赖 A 类型? celery 文档里有 task chain 模式介绍,应该足够满足你的需求了
UN2758
2023-08-02 11:32:09 +08:00
你这里 B 类型需要严格要求按 1-2-3 优先级顺序分配负载还是三个都要执行一遍?优先级可以考虑配置 worker 权重
llsquaer
2023-08-02 11:42:47 +08:00
@UN2758 B 依赖 A ,B 执行的部分数据是需要 A 的计算结果的。 因为 B 任务的机器记录自己的结果。所以想按照 B1 B2 B3 顺序执行,就是说尽量平分。后期避免重新复制数据。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/961659

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX