2017-06-08 79 views
1

我正在尝试关注本教程How to build docker cluster with celery and RabbitMQ in 10 minutesDocker上的芹菜+ rabbitmq

按照教程,虽然我改变了以下文件。 我docker-compose.yml文件看起来如下:

version: '2'                  

services: 
    rabbit: 
    hostname: rabbit 
    image: rabbitmq 
    environment: 
     - RABBITMQ_DEFAULT_USER=user       
     - RABBITMQ_DEFAULT_PASS=pass       
     - HOSTNAME=rabbitmq          
     - RABBITMQ_NODENAME=rabbitmq 
    ports: 
     - "5672:5672" # we forward this port because it's useful for debugging 
     - "15672:15672" # here, we can access rabbitmq management plugin          


worker: 
    build: 
    context: .            
    dockerfile: Dockerfile         
    volumes:               
     - .:/app             
    links:               
     - rabbit             
    depends_on:              
     - rabbit        

test_celery/celery.py

from __future__ import absolute_import, unicode_literals 
from celery import Celery              

app = Celery('test_celery',broker='amqp://user:[email protected]:5672//',backend='rpc://', include=['test_celery.tasks']) 

Dockerfile

FROM python:3.6  
ADD requirements.txt /app/requirements.txt 
ADD ./test_celery /app/ 
WORKDIR /app/ 
RUN pip install -r requirements.txt 
ENTRYPOINT celery -A test_celery worker --loglevel=info 

我运行代码使用下面的命令(我的操作系统是Ubuntu的16.04):

sudo docker-compose build 
sudo docker-compose scale worker=5 
sudo docker-compose up 

在屏幕上输出看起来是这样的:

rabbit_1 | closing AMQP connection <0.501.0> (172.19.0.6:60470 -> 172.19.0.7:5672, vhost: '/', user: 'admin'): 
rabbit_1 | client unexpectedly closed TCP connection 
rabbit_1 | 
rabbit_1 | =WARNING REPORT==== 8-Jun-2017::03:34:15 === 
rabbit_1 | closing AMQP connection <0.479.0> (172.19.0.6:60468 -> 172.19.0.7:5672, vhost: '/', user: 'admin'): 
rabbit_1 | client unexpectedly closed TCP connection 
rabbit_1 | 
rabbit_1 | =WARNING REPORT==== 8-Jun-2017::03:34:15 === 
rabbit_1 | closing AMQP connection <0.366.0> (172.19.0.4:44754 -> 172.19.0.7:5672, vhost: '/', user: 'admin'): 
rabbit_1 | client unexpectedly closed TCP connection 
rabbit_1 | 
rabbit_1 | =WARNING REPORT==== 8-Jun-2017::03:34:15 === 
rabbit_1 | closing AMQP connection <0.359.0> (172.19.0.4:44752 -> 172.19.0.7:5672, vhost: '/', user: 'admin'): 
rabbit_1 | client unexpectedly closed TCP connection 
worker_1 | [2017-06-08 03:34:19,138: INFO/MainProcess] missed heartbeat from [email protected] 
worker_1 | [2017-06-08 03:34:24,140: INFO/MainProcess] missed 
heartbeat from [email protected] 
worker_1 | [2017-06-08 03:34:24,141: INFO/MainProcess] missed heartbeat from [email protected] 

然后在同一目录下我跑

python -m test_celery.run_tasks 

,并从该输出给了我:

一个kombu.exceptions.OperationalError: timed out错误,我我不确定如何修复并获得与本教程中相同的输出。

回答

0

作为输出和错误报告,“客户端意外关闭TCP连接”,“kombu.exceptions.OperationalError:超时”,似乎RabbitMQ没有按预期启动。你能运行命令“docker ps -a”来检查Rabbit容器的状态吗?如果退出,“docker logs container-id”会打印出Rabbit容器的日志。

+0

状态显示为'上一分钟',日志显示了一系列消息:= INFO REPORT ==== 8-Jun-2017 :: 04:00:21 === 接受AMQP连接<0.398.0>(172.19.0.3:33112 - > 172.19.0.2:5672) =信息报告==== 8-Jun-2017 :: 04:00:21 === 连接<0.398.0>(172.19.0.3: 33112 - > 172.19.0.2:5672):用户'管理员'认证并授权访问虚拟主机'/' – jorge

+0

我不知道它是否有用,但是在执行'docker-compose down'并重建后,我得到:错误:for dockerclusterwithceleryandrabbitmq_worker_4 Can not启动服务工作者:网络dockerclusterwithceleryandrabbitmq_default未找到 错误:对于dockerclusterwithceleryandrabbitmq_worker_5无法启动服务器ice worker:network dockerclusterwithceleryandrabbitmq_default not found 错误:对于dockerclusterwithceleryandrabbitmq_worker_1无法启动服务工作者:网络dockerclusterwithceleryandrabbitmq_default未找到 ... – jorge

+0

将celery.py中的“rabbit”更改为localhost的ip。 https://github.com/plantpark/docker-cluster-with-celery-and-rabbitmq。这里的代码适用于我。 –