【问题标题】:Celery not working when running in Docker container在 Docker 容器中运行时芹菜不工作
【发布时间】:2019-01-15 01:20:18
【问题描述】:

我正在尝试开发一个由侦听器组成的应用程序,该侦听器将事件发送到 RabbitMQ,Celery 从队列中提取事件。

在本地运行所有组件时,我的应用程序按预期工作。如果我的侦听器在本地运行,并且所有其他组件都在 Docker 容器中运行,它也可以工作。但是如果我也在容器中运行我的监听器,那么 Celery 就不会收到任何事件。

该应用程序基于 Django,与 Celery 的连接是这样完成的:

app = Celery('mini_iot')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()

在 settings.py 我有:

CELERY_BROKER_URL = 'amqp://rabbitmq'

其中 rabbitmq 是容器的主机名。

监听器使用delay函数向Celery发送任务。

docker-compose 是:

version: '3'
services:
 listener:
  image: core-app 
  command: python manage.py runscript listener
  volumes:
   - .:/mini-iot
  depends_on:
   - rabbitmq
   - mqtt
  working_dir: /mini-iot/mini_iot
 worker:
  image: core-app 
  command: celery -A mini_iot worker --loglevel=info -f log2.txt
  volumes:
   - .:/mini-iot
  depends_on:
   - rabbitmq
   - mqtt
  working_dir: /mini-iot/mini_iot
 rabbitmq:
  image: rabbitmq:3.6.10
  volumes:
   - /var/lib/rabbitmq:/var/lib/rabbitmq
  ports:
   - "5672:5672"
   - "15672:15672"

谁能帮我调试一下问题,或者有谁知道问题出在哪里?

容器可以在正确的端口上相互通信。我已经使用 telnet 进行了测试。

【问题讨论】:

  • docker设置的描述是必要的,所以人们可以提供帮助。对于这种情况,容器的网络配置之类的东西是必不可少的。
  • 谢谢,我更新了问题
  • 任何错误信息?
  • 不出现错误信息

标签: django docker rabbitmq celery


【解决方案1】:

我认为您的 CELERY_BROKER_URL 应该是

amqp://guest:guest@rabbitmq:5672

根据 rabbitmq docker docs (https://hub.docker.com/_/rabbitmq/),默认的用户名和密码是 guest/guest。

【讨论】:

    【解决方案2】:

    您应该将links 添加到listenerworker

    version: '3'
    services:
     listener:
      image: core-app 
      command: python manage.py runscript listener
      volumes:
       - .:/mini-iot
      links:
       - rabbitmq
      depends_on:
       - rabbitmq
       - mqtt
      working_dir: /mini-iot/mini_iot
     worker:
      image: core-app 
      command: celery -A mini_iot worker --loglevel=info -f log2.txt
      volumes:
       - .:/mini-iot
      links:
       - rabbitmq
      depends_on:
       - rabbitmq
       - mqtt
      working_dir: /mini-iot/mini_iot
     rabbitmq:
      image: rabbitmq:3.6.10
      volumes:
       - /var/lib/rabbitmq:/var/lib/rabbitmq
      ports:
       - "5672:5672"
       - "15672:15672"
    

    【讨论】:

      猜你喜欢
      • 2022-01-27
      • 2021-05-08
      • 2020-05-06
      • 2016-02-04
      • 2022-08-09
      • 2018-04-05
      • 2020-10-07
      • 2016-05-10
      • 1970-01-01
      相关资源
      最近更新 更多