我正在嘗試設定我的 Django 應用程式以具有推送通知功能。對于計劃通知,我嘗試使用 Celery,對于訊息代理,我選擇了 RabbitMQ。我的應用程式在 Docker 容器中運行,我正在努力讓 RabbitMQ 作業。Cannot connect to amqp://guest:**@127.0.0.1:5672//: [Errno 111] Connection refused.運行時收到錯誤訊息docker-compose up。這是我的celery和我的rabbitmq3服務docker-compose.yml:
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 檔案有問題嗎?希望對此有任何幫助,我的設定有什么問題?
uj5u.com熱心網友回復:
這應該可以解決問題
CELERY_BROKER_URL=amqp://guest:guest@rabbitmq3:5672/
如果你有一個關于兔子的虛擬主機
CELERY_BROKER_URL=amqp://guest:guest@rabbitmq3:5672/vhost
如果它不起作用,請檢查兔子容器的控制臺以獲取線索
uj5u.com熱心網友回復:
在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']}"
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/330714.html
標籤:姜戈 码头工人 docker-compose 兔子mq 芹菜
