V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
llsquaer
V2EX  ›  Python

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

  •  
  •   llsquaer · 2023-08-01 23:45:03 +08:00 · 1054 次点击
    这是一个创建于 484 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在有 10 台机器,其中 7 台执行 A 任务 ,3 台执行 B 任务。要求是 A 任务运行完毕丢给 B 任务按照顺序执行。

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


    请教下,谢谢
    5 条回复    2023-08-02 11:42:47 +08:00
    fenglangjuxu
        1
    fenglangjuxu  
       2023-08-02 09:16:13 +08:00 via iPhone
    有个曲线救国的方案 每个任务执行前检测它的前置完成没,没有完成就等。

    执行完成的写入 redis 。
    Akkuman
        2
    Akkuman  
       2023-08-02 09:20:38 +08:00 via Android
    1. 可以使用 celery 的任务链
    2. 正常在 worker 函数里面调用 delay ,会报错,然后按照提示修改下配置即可
    UN2758
        3
    UN2758  
       2023-08-02 11:29:58 +08:00
    没太看懂,B1 严格依赖 A1 类型的任务还是简单的 B 类型依赖 A 类型? celery 文档里有 task chain 模式介绍,应该足够满足你的需求了
    UN2758
        4
    UN2758  
       2023-08-02 11:32:09 +08:00
    你这里 B 类型需要严格要求按 1-2-3 优先级顺序分配负载还是三个都要执行一遍?优先级可以考虑配置 worker 权重
    llsquaer
        5
    llsquaer  
    OP
       2023-08-02 11:42:47 +08:00
    @UN2758 B 依赖 A ,B 执行的部分数据是需要 A 的计算结果的。 因为 B 任务的机器记录自己的结果。所以想按照 B1 B2 B3 顺序执行,就是说尽量平分。后期避免重新复制数据。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1267 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 18:00 · PVG 02:00 · LAX 10:00 · JFK 13:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.