标签:解法 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 都是不行的
遇到问题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))
标签:解法 run 遇到 配置 bridge doc pos 手工 地方
原文地址:http://www.cnblogs.com/xuanmanstein/p/7993248.html