【问题标题】:How to setup Django + RabbitMQ + Celery with Docker?如何使用 Docker 设置 Django + RabbitMQ + Celery?
【发布时间】:2021-12-08 04:50:57
【问题描述】:

我正在尝试将我的 Django 应用设置为具有推送通知功能。对于调度通知,我尝试使用 Celery,对于消息代理,我选择了 RabbitMQ。我的应用程序在 Docker 容器中运行,我正在努力让 RabbitMQ 工作。运行docker-compose up 时收到错误消息Cannot connect to amqp://guest:**@127.0.0.1:5672//: [Errno 111] Connection refused.。这是我的docker-compose.yml 提供的celeryrabbitmq3 服务:

celery:
    restart: always
    build:
      context: .
    command: celery -A test_celery worker -l info
    volumes:
      - .:/test_celery
    env_file:
      - ./.env
    depends_on:
      - app
      - rabbitmq3
  
rabbitmq3:
  container_name: "rabbitmq"
  image: rabbitmq:3-management-alpine
  ports:
    - 5672:5672
    - 15672:15672

在我的 test_celery -app 中,我有一个名为 celery.py 的文件,其中包含以下内容:

import os
from celery import Celery

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'test_celery.settings')

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

最后,在我的settings.py 我有这个:CELERY_BROKER_URL = 'amqp://localhost'

我应该以某种不同的方式定义 CELERY_BROKER_URL 吗?我的 docker-compose 文件有问题吗?希望有任何帮助,我的设置有什么问题?

【问题讨论】:

    标签: django docker docker-compose rabbitmq celery


    【解决方案1】:

    这应该可以解决问题

    CELERY_BROKER_URL=amqp://guest:guest@rabbitmq3:5672/
    

    如果你在兔子上有一个虚拟主机

    CELERY_BROKER_URL=amqp://guest:guest@rabbitmq3:5672/vhost
    

    如果它不起作用,请检查兔子容器的控制台以获取线索

    【讨论】:

      【解决方案2】:

      settings.py 中定义:

      RABBITMQ = {
          "PROTOCOL": "amqp", # in prod change with "amqps"
          "HOST": os.getenv("RABBITMQ_HOST", "localhost"),
          "PORT": os.getenv("RABBITMQ_PORT", 5672),
          "USER": os.getenv("RABBITMQ_USER", "guest"),
          "PASSWORD": os.getenv("RABBITMQ_PASSWORD", "guest"),
      }
      
      CELERY_BROKER_URL = f"{RABBITMQ['PROTOCOL']}://{RABBITMQ['USER']}:{RABBITMQ['PASSWORD']}@{RABBITMQ['HOST']}:{RABBITMQ['PORT']}"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-04-17
        • 2018-08-02
        • 2016-12-01
        • 2021-12-01
        • 2017-10-24
        • 2015-09-04
        • 1970-01-01
        相关资源
        最近更新 更多