我不能让我的芹菜工人不断地听默认队列。芹菜不断地出口。
$: docker-compose up
Starting tasker_rabbitmq_1
Starting tasker_celery_1
Attaching to tasker_rabbitmq_1, tasker_celery_1
tasker_celery_1 exited with code 1
rabbitmq_1 |
rabbitmq_1 | RabbitMQ 3.6.1. Copyright (C) 2007-2016 Pivotal Software, Inc.
rabbitmq_1 | ## ## Licensed under the MPL. See http://www.rabbitmq.com/
rabbitmq_1 | ## ##
rabbitmq_1 | ########## Logs: /var/log/rabbitmq/rabbit@0bcd2c4762eb.log
rabbitmq_1 | ###### ## /var/log/rabbitmq/rabbit@0bcd2c4762eb-sasl.log
rabbitmq_1 | ##########
rabbitmq_1 | Starting broker... completed with 6 plugins.我正在尝试构建一个应用程序,它有一个单独的作业层作为一个单独部署的作业容器。所以建筑是:
这就是我所拥有的:
文件夹结构:
-tasker
-tasker
-tasks.py
-celeryconfig.py
- __init__.py
-Dockerfile
-docker-compose.yml
-requirements.txttasks.py:
from celery import Celery
from celery import task
celery = Celery('tasks', broker='amqp://guest@localhost//')
import os
@celery.task
def add(x, y):
return x + yDockerfile:
FROM python:3.4
ENV PYTHONBUFFERED 1
WORKDIR /tasker
ADD requirements.txt /tasker/
RUN pip install -r requirements.txt
ADD . /tasker/docker-compose.yml:
rabbitmq:
image: tutum/rabbitmq
environment:
- RABBITMQ_PASS=mypass
ports:
- "5672:5672"
- "15672:15672"
celery:
build: .
command: celery worker --app=tasker.tasks
volumes:
- .:/tasker
links:
- rabbitmq:rabbit我遗漏了什么吗?为什么芹菜要用代码1退出呢?
发布于 2016-09-26 16:50:01
1)将芹菜安装到python映像或使用https://hub.docker.com/r/library/celery/
2)在rabbitmq中添加完整的入口,并在行中添加密码:
celery = Celery('tasks', broker='amqp://guest:mypass@rabbit//')
发布于 2017-05-18 21:45:59
当您试图打开芹菜容器时,RabbitMQ容器不可用。
处理这一问题的快速和肮脏的方法是首先使用-d标志在后台手动转动rabbitmq:
docker-compose up -d rabbitmq等几秒钟,然后:
docker-compose up celery正确的处理启动顺序的方法记录在这里,-> https://docs.docker.com/compose/startup-order/
编辑
关于如何用“等一下”实现这一点,我正在扩展我的答案。
celery:
build: .
command: ./wait-for-it.sh rabbitmq:5672 --timeout=2 --strict -- celery worker -A tasker.tasks
volumes:
- .:/tasker
links:
- rabbitmq编辑2
我还注意到,在撰写文件中,links指令下的容器名是错误的。应该是rabbitmq。这也会影响您的容器打开的顺序。
编辑3
您可能还需要向rabbitmq容器添加一个主机名:
rabbitmq:
image: tutum/rabbitmq
hostname: rabbitmqhttps://stackoverflow.com/questions/37867722
复制相似问题