docker-compose 向上 <service> 无法正常启动 <service>
docker-compose up <service> does not launch <service> properly
上下文: 我在 celery
+ rabbitmq
堆栈上有一个 master-worker 系统。
系统已 dockerized(worker
服务未在此处介绍)
version: '2'
services:
rabbit:
hostname: rabbit
image: rabbitmq:latest
environment:
- RABBITMQ_DEFAULT_USER=admin
- RABBITMQ_DEFAULT_PASS=mypass
ports:
- "5672:5672"
master:
build:
context: .
dockerfile: dockerfile
volumes:
- .:/app
links:
- rabbit
depends_on:
- rabbit
当我执行 docker-compose up
- 一切正常!
问题:但是我不能使用docker-compose up
,我需要使用docker-compose master
和docker-compose worker
(工人的两个单独的命令和主机)。因此,当我执行 docker-compose master
- 容器启动,但挂断了!:
研究:我发现它在任务提交时挂起:
result = longtime_add.delay(count)
其中 longtime_add
是一项任务。
完整代码:https://github.com/waryak/MastersDiploma/tree/vlad
另外,请编辑标题 - 我觉得它需要更清晰的标题
几个要点:(1) 我没有看到您在 github 中的生产者代理 url 的预期输出消息; (2) 我找不到 /src/network
添加到你的 pythonpath 的位置; (3) 在 celery.py
中加载生产者代理 url 的代码看起来是错误的,因为它正在寻找 CONFIG
变量而不是 PRODUCE_BROKER_URL
,因为它在 variables.env
文件。生产者超时的原因是它无法连接到代理,因此您可以通过打印出生产者和工人代理 URL 来走上正确的道路。首先在生产者中尝试对 broker_url
进行硬编码可能更容易:
from celery.app import Celery
app = Celery(broker_url='amqp://admin:mypass/rabbit:56772')
app.send_task(name='messages.tasks.longtime_add', kwargs={})
我刚试了 docker-compose up rabbit master
就成功了。这很奇怪,因为我在代理日志或任何其他日志中看不到任何外部差异。此外,docker 文档保证,所有依赖的服务都将启动...
上下文: 我在 celery
+ rabbitmq
堆栈上有一个 master-worker 系统。
系统已 dockerized(worker
服务未在此处介绍)
version: '2'
services:
rabbit:
hostname: rabbit
image: rabbitmq:latest
environment:
- RABBITMQ_DEFAULT_USER=admin
- RABBITMQ_DEFAULT_PASS=mypass
ports:
- "5672:5672"
master:
build:
context: .
dockerfile: dockerfile
volumes:
- .:/app
links:
- rabbit
depends_on:
- rabbit
当我执行 docker-compose up
- 一切正常!
问题:但是我不能使用docker-compose up
,我需要使用docker-compose master
和docker-compose worker
(工人的两个单独的命令和主机)。因此,当我执行 docker-compose master
- 容器启动,但挂断了!:
研究:我发现它在任务提交时挂起:
result = longtime_add.delay(count)
其中 longtime_add
是一项任务。
完整代码:https://github.com/waryak/MastersDiploma/tree/vlad
另外,请编辑标题 - 我觉得它需要更清晰的标题
几个要点:(1) 我没有看到您在 github 中的生产者代理 url 的预期输出消息; (2) 我找不到 /src/network
添加到你的 pythonpath 的位置; (3) 在 celery.py
中加载生产者代理 url 的代码看起来是错误的,因为它正在寻找 CONFIG
变量而不是 PRODUCE_BROKER_URL
,因为它在 variables.env
文件。生产者超时的原因是它无法连接到代理,因此您可以通过打印出生产者和工人代理 URL 来走上正确的道路。首先在生产者中尝试对 broker_url
进行硬编码可能更容易:
from celery.app import Celery
app = Celery(broker_url='amqp://admin:mypass/rabbit:56772')
app.send_task(name='messages.tasks.longtime_add', kwargs={})
我刚试了 docker-compose up rabbit master
就成功了。这很奇怪,因为我在代理日志或任何其他日志中看不到任何外部差异。此外,docker 文档保证,所有依赖的服务都将启动...