在网上找了很久也没找到 Celery 远程调用的例子,Celery 是一个分布式的任务队列,应该是能够支持在其他机器上产生 worker 作为消费者的,请问各位大大有 demo, 或者例子看看吗?
1
HFcbyqP0iVO5KM05 May 5, 2017 via Android
机器 A,B,C 上的 celery_app 用同一个 broker
|
2
KIDJourney May 5, 2017
用 broker 实现的分布式。
|
3
VicYu May 5, 2017
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 |
4
NaVient OP |
5
neoblackcap May 5, 2017
|
6
kinghui May 5, 2017 @NaVient xx.delay 的这个 xx 既可以是具体的函数, 也可以是一个 Celery 的签名, 参见 http://docs.celeryproject.org/en/latest/userguide/canvas.html#signatures
|
7
NaVient OP |
8
zhengxiaowai May 5, 2017
其实,我觉得不应该部署在其他机器上的,起码从部署上来说多了不少麻烦。结构上也变得耦合,下次修改 task 的话要在多处修改。
我觉得应该封装成远程调用的方式,比如 grpc、http 这样子的比较好 |
9
julyclyde May 5, 2017
@zhengxiaowai 多处修改倒不是难事,多台机器发同样的文件而已。
你用 grpc 的话,实际执行工作的 worker 也不能只有一台吧,其实没啥区别 |
10
tuteng May 6, 2017
同意 @VicYu @neoblackcap @kinghui 可以通过 send_task 发布任务,执行远程调用
具体可以参考这个 https://github.com/mher/flower celery 的管理工具 |