1
HFcbyqP0iVO5KM05 2017-05-05 09:45:30 +08:00 via Android
机器 A,B,C 上的 celery_app 用同一个 broker
|
2
KIDJourney 2017-05-05 09:48:53 +08:00
用 broker 实现的分布式。
|
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 |
4
NaVient OP |
5
neoblackcap 2017-05-05 10:13:35 +08:00
|
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
|
7
NaVient OP |
8
zhengxiaowai 2017-05-05 10:33:20 +08:00
其实,我觉得不应该部署在其他机器上的,起码从部署上来说多了不少麻烦。结构上也变得耦合,下次修改 task 的话要在多处修改。
我觉得应该封装成远程调用的方式,比如 grpc、http 这样子的比较好 |
9
julyclyde 2017-05-05 11:14:37 +08:00
@zhengxiaowai 多处修改倒不是难事,多台机器发同样的文件而已。
你用 grpc 的话,实际执行工作的 worker 也不能只有一台吧,其实没啥区别 |
10
tuteng 2017-05-06 09:52:26 +08:00
同意 @VicYu @neoblackcap @kinghui 可以通过 send_task 发布任务,执行远程调用
具体可以参考这个 https://github.com/mher/flower celery 的管理工具 |