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
NaVient
V2EX  ›  Python

想求助一个关于 Celery 远程调用的问题

  •  
  •   NaVient · 2017-05-05 09:28:37 +08:00 · 4111 次点击
    这是一个创建于 2549 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在网上找了很久也没找到 Celery 远程调用的例子,Celery 是一个分布式的任务队列,应该是能够支持在其他机器上产生 worker 作为消费者的,请问各位大大有 demo, 或者例子看看吗?
    10 条回复    2017-05-06 09:52:26 +08:00
    gulu
        1
    gulu  
       2017-05-05 09:45:30 +08:00 via Android
    机器 A,B,C 上的 celery_app 用同一个 broker
    KIDJourney
        2
    KIDJourney  
       2017-05-05 09:48:53 +08:00
    用 broker 实现的分布式。
    VicYu
        3
    VicYu  
       2017-05-05 09:51:10 +08:00
    A 机器的 Task broker 比如指定到 redis://10.10.10.10:12345/0

    B 机器,C 机器的 worker,启动时候(celery worker -b redis://10.10.10.10:12345/0)或者在配置时同样指定 redis://10.10.10.10:12345/0
    NaVient
        4
    NaVient  
    OP
       2017-05-05 09:56:42 +08:00
    @VicYu
    @KIDJourney
    @gulu

    我理解的消费者的代码是 xx.delay 这个函数,这个函数需要部署在其他机器上吗
    neoblackcap
        5
    neoblackcap  
       2017-05-05 10:13:35 +08:00
    @NaVient 按你说的 xx 那个用 @app.task 装饰的函数是需要在其他机器部署的。
    kinghui
        6
    kinghui  
       2017-05-05 10:14:13 +08:00   ❤️ 1
    @NaVient xx.delay 的这个 xx 既可以是具体的函数, 也可以是一个 Celery 的签名, 参见 http://docs.celeryproject.org/en/latest/userguide/canvas.html#signatures
    NaVient
        7
    NaVient  
    OP
       2017-05-05 10:26:21 +08:00
    @neoblackcap
    @kinghui
    感谢,其实就是想知道这个.
    zhengxiaowai
        8
    zhengxiaowai  
       2017-05-05 10:33:20 +08:00
    其实,我觉得不应该部署在其他机器上的,起码从部署上来说多了不少麻烦。结构上也变得耦合,下次修改 task 的话要在多处修改。

    我觉得应该封装成远程调用的方式,比如 grpc、http 这样子的比较好
    julyclyde
        9
    julyclyde  
       2017-05-05 11:14:37 +08:00
    @zhengxiaowai 多处修改倒不是难事,多台机器发同样的文件而已。
    你用 grpc 的话,实际执行工作的 worker 也不能只有一台吧,其实没啥区别
    tuteng
        10
    tuteng  
       2017-05-06 09:52:26 +08:00
    同意 @VicYu @neoblackcap @kinghui 可以通过 send_task 发布任务,执行远程调用
    具体可以参考这个 https://github.com/mher/flower celery 的管理工具
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2977 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 12:58 · PVG 20:58 · LAX 05:58 · JFK 08:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.