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的主要内容,如果未能解决你的问题,请参考以下文章
Linux 下的Docker安装与IDEA配置远程Docker
Linux 下的Docker安装与IDEA配置远程Docker