码迷,mamicode.com
首页 > 其他好文 > 详细

docker下的celery

时间:2017-12-06 17:48:01      阅读:778      评论:0      收藏:0      [点我收藏+]

标签:解法   run   遇到   配置   bridge   doc   pos   手工   地方   

配置taiga docker的时候,不是我一个人遇到这个问题。

问题描述:

用docker-compose启动celery_worker和rabbitmq,但是celery_worker 连不上 rabbitmq

celeryworker_1 | [2017-12-06 07:56:36,539: ERROR/MainProcess] consumer: Cannot connect to amqp://guest:**@rabbit1:5672//: [Errno -2] Name or service not known.
celeryworker_1 | Trying again in 4.00 seconds...

 

创建celery的地方用官网的

app = Celery(backend=‘amqp‘, broker=‘amqp://‘)

是不行的。

改成正式点的:

app = Celery(backend=‘amqp‘, broker=‘amqp://guest:guest@localhost:5672/‘)

也是不行的,不论用localhost。docker-compose 里 给 rabbitmq 设置的  hostname 都是不行的

 

成功尝试一:rabbitmq在容器中,celery worker 和 发起异步任务在host

遇到问题1,首先缩小问题。分步尝试,首先尝试只用容器启动rabbitmq。然后和传统方式一样,在host手工启动celery worker。

成功。

问题缩小到celery_worker容器化的问题。

稍微靠谱点的解法是

1先手工创建1个docker bridge

2 用docker命令行分别启动rabbitmq和celery worker 

3 手工把celery worker 和 rabbitmq 添加进bridge。

据说可行,但是我就是要用docker-compose的啊,这样太丑陋了。

但至少说明有可能成功(不是celery本身bug之类)

 

 

 

 

docker中只运行rabbitmq,暴露5672 和15672端口,在本地host安装celery 起celery worker 是没问题的

但是如果想把celery worker也放进容器里,就出问题了。总是提示

 

 

ubuntu查看 ip 

ip addr show

 

HOST_IP = ‘192.168.239.129‘ # ip of host(run docker-compose) 
app = Celery(backend = ‘rpc://‘, broker = ‘amqp://guest:guest@{0}:5672/‘.format(HOST_IP))

 

docker下的celery

标签:解法   run   遇到   配置   bridge   doc   pos   手工   地方   

原文地址:http://www.cnblogs.com/xuanmanstein/p/7993248.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!