python - 无法将 celery 与docker上的rabbitmq服务器连接

标签 python docker docker-compose rabbitmq celery

我正在尝试创建 docker-compose 文件,该文件将使用 celery 任务运行 django apache 服务器,并使用 rabbitmq 作为消息代理。我的问题是 celery 无法连接到 rabbitmq。 我收到了那个错误:

[2021-02-18 08:11:44,769: ERROR/MainProcess] consumer: Cannot connect to amqp://guest:**@rabbitmq:5672//: [Errno 111] Connection refused.

另外,这是我第一次构建 docker 镜像,所以我可能在那里犯了很多错误。

我的 docker-compose 文件:

version: "3.8"

services:
  server: &server
    build:
      context: .
    environment:
      - PYTHONUNBUFFERED=1
      - CELERY_BROKER=amqp://admin:password@rabbitmq:5672//
    volumes:
      - .:/var/www/html/public
    ports:
      - 80:80
    command:
      ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
    depends_on:
      - rabbitmq
      - celery_beat
    networks:
      - main
  
  rabbitmq:
    container_name : rabbitmq
    image: rabbitmq:3.8
    hostname: rabbitmq
    ports:
      - 5672:5672
    networks:
      - main
    environment:   
    - RABBITMQ_DEFAULT_USER=admin
    - RABBITMQ_DEFAULT_PASS=password


  celery_worker:
    <<: *server
    hostname: rabbitmq
    command: celery -A public worker -l INFO
    ports: []
    networks:
      - main
    depends_on:
      - rabbitmq
    environment:
    #- RABBITMQ_DEFAULT_USER=admin
    #- RABBITMQ_DEFAULT_PASS=password
    - CELERY_BROKER=amqp://admin:password@rabbitmq:5672//

networks:
  main:

docker 文件:

FROM ubuntu:latest

ENV PYTHONUNBUFFERED=1

RUN apt-get -y update
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y apache2 python3.8 python3-pip libapache2-mod-wsgi-py3

RUN pip3 install --upgrade pip

ADD requirements.txt .

RUN pip install -r requirements.txt

ADD ./scraper_project.conf /etc/apache2/sites-available/scraper_project.conf
ADD . /var/www/html/public

WORKDIR /var/www/html/public

RUN chown -R :www-data .
RUN chmod -R 775 . 

EXPOSE 80

RUN a2ensite scraper_project
RUN a2dissite 000-default

CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]

celery 设置:

CELERY_BROKER_URL = os.environ['CELERY_BROKER']

最佳答案

已修复。问题是我在 celery worker 中设置了主机名。如果有人遇到类似问题,只需删除主机名:celery_worker 上的 rabbitmq。

关于python - 无法将 celery 与docker上的rabbitmq服务器连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66254663/

相关文章:

mysql - 无法将我的应用程序连接到Docker Compose网络中的MySql服务

python - listdir 目录并查找是否以 ".mp4"结尾的文件名“

python - tensorflow 2.0 : How to update tensors?

python - Scrapy - 数据库选择

bash - 强制在Docker镜像中更改时区

ruby-on-rails - Docker,Rails,Postgres-找不到数据库服务错误

python - 在Python中将函数参数名称传递给另一个函数

wordpress - 如何使用 docker-compose 的官方 WordPress 镜像修复 wp-content 的文件权限

docker - 运行docker-deploy-hdp30.sh时获取 “docker: invalid reference format.”

Docker Compose 和 Volumes 问题