Celery Beat Docker容器无法连接RabbitMQ容器的问题求助
Celery Beat Docker容器无法连接RabbitMQ容器的问题求助
各位大佬好,我遇到了Celery Beat Docker容器无法连接RabbitMQ消息队列的问题,折腾了好一阵没搞定,来求助大家!
我用Docker Compose部署了整套服务,目前有一个正常运行的RabbitMQ容器,配置如下:
rabbitmq: image: rabbitmq:3.11.13-management-alpine container_name: 'rabbitmq' ports: - 5672:5672 - 15672:15672 env_file: - .env volumes: - ./data:/var/lib/rabbitmq/mnesia networks: - rabbitmq_go_net
同时还有一个运行Django+Celery的Python服务集群,其中Celery Beat容器的配置是这样的:
celery-beat: build: context: . dockerfile: ./compose/local/django/Dockerfile container_name: 'beat' image: beat command: ["./wait-for-it.sh", "0.0.0.0:1337", "--", "/start-celerybeat"] volumes: - .:/app env_file: - .env depends_on: - rabbitmq - backend restart: always
Celery Beat的启动脚本start.sh(由/start-celerybeat调用)内容:
#!/bin/bash set -o errexit set -o nounset rm -f './celerybeat.pid' celery -A app beat -l INFO
我的app/celery.py配置:
from __future__ import absolute_import import os from celery import Celery from celery.schedules import crontab os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'app.settings') app = Celery('app') app.config_from_object('django.conf:settings', namespace='CELERY') app.autodiscover_tasks()#(lambda: settings.INSTALLED_APPS) @app.on_after_configure.connect def setup_periodic_tasks(sender, **kwargs): # 定时任务配置暂省略 pass
app/settings.py里的相关配置片段:
INSTALLED_APPS = [ # 其他APP省略 'django_celery_results', 'django_celery_beat', # 其他APP省略 ] CELERY_BROKER_URL = CONFIG.get('CELERY_BROKER_URL') CELERY_RESULT_BACKEND = CONFIG.get('CELERY_RESULT_BACKEND') CELERY_ACCEPT_CONTENT = ['application/json'] CELERY_RESULT_SERIALIZER = 'json' CELERY_TASK_SERIALIZER = 'json' CELERY_BEAT_SCHEDULER = "django_celery_beat.schedulers:DatabaseScheduler"
.env文件的内容:
RABBITMQ_USER=user RABBITMQ_PASSWORD=password RABBITMQ_PORT=5672 RABBITMQ_HOST=rabbitmq CELERY_BROKER_URL=amqp://${RABBITMQ_USER}:${RABBITMQ_PASSWORD}@localhost:${RABBITMQ_PORT}/${RABBITMQ_HOST} CELERY_RESULT_BACKEND=amqp://
现在启动Docker Compose后,Celery Beat容器一直报连接拒绝的错误:
beat | [2024-02-20 15:19:54,198: ERROR/MainProcess] beat: Connection error: [Errno 111] Connection refused. Trying again in 6.0 seconds... beat | [2024-02-20 15:20:00,212: ERROR/MainProcess] beat: Connection error: [Errno 111] Connection refused. Trying again in 8.0 seconds... beat | [2024-02-20 15:20:08,223: ERROR/MainProcess] beat: Connection error: [Errno 111] Connection refused. Trying again in 10.0 seconds... beat | [2024-02-20 15:20:18,235: ERROR/MainProcess] beat: Connection error: [Errno 111] Connection refused. Trying again in 12.0 seconds... beat | [2024-02-20 15:20:30,248: ERROR/MainProcess] beat: Connection error: [Errno 111] Connection refused. Trying again in 14.0 seconds... beat | [2024-02-20 15:20:44,265: ERROR/MainProcess] beat: Connection error: [Errno 111] Connection refused. Trying again in 16.0 seconds... beat | [2024-02-20 15:21:00,283: ERROR/MainProcess] beat: Connection error: [Errno 111] Connection refused. Trying again in 18.0 seconds... beat | [2024-02-20 15:21:18,307: ERROR/MainProcess] beat: Connection error: [Errno 111] Connection refused. Trying again in 20.0 seconds...
我已经确认RabbitMQ容器正常启动,端口映射也没问题,但就是连不上。如果需要更多细节,比如完整日志或其他配置文件,随时告诉我!
备注:内容来源于stack exchange,提问作者fullstacknoob
相关产品推荐
相关产品推荐

