docker下的celery

Posted 永远的幻想

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker下的celery相关的知识,希望对你有一定的参考价值。

配置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:[email protected]: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:[email protected]{0}:5672/‘.format(HOST_IP))

 

以上是关于docker下的celery的主要内容,如果未能解决你的问题,请参考以下文章

Windows7系统下的Docker

Linux 下的Docker安装与IDEA配置远程Docker

Linux 下的Docker安装与IDEA配置远程Docker

Linux 下的Docker安装与IDEA配置远程Docker

Linux下的docker

Docker在contos7下的安装: