#django #docker #rabbitmq #celery
Вопрос:
Я недавно работал с Docker, и мне удалось настроить некоторые службы, чтобы они могли использовать асинхронные функции, но когда я пытаюсь отправить задачу в Сельдерей из Django с помощью RabbitMQ, она никогда не достигает.
Когда я запускаю код за пределами Docker, выполняя несколько команд на консоли, все работает идеально.
Не уверен, что происходит.
Любая помощь была бы признательна.
version: "3.7"
services:
rabbit:
hostname: rabbit
container_name: rabbitmq
image: 'rabbitmq:3.7-management'
environment:
RABBITMQ_ERLANG_COOKIE: "SWQOKODSQALRPCLNMEQG"
RABBITMQ_DEFAULT_USER: admin
RABBITMQ_DEFAULT_PASS: admin
RABBITMQ_DEFAULT_VHOST: "/"
RABBITMQ_VM_MEMORY_HIGH_WATERMARK: 0.5
CELERY_BROKER_URL: "amqp://admin:admin@172.23.240.1:5672"
ports:
- "15672:15672"
- "5672:5672"
expose:
- "5672"
restart: on-failure
networks:
rabbitmq_net:
aliases:
- rabbitmq_host
custom_app:
build: .
container_name: custom_app
command: python manage.py runserver 0.0.0.0:8000
volumes:
- static:/code/static
- .:/code
depends_on:
- rabbit
environment:
- CELERY_BROKER='amqp://admin:admin@172.23.240.1:5672'
- CELERY_BACKEND='amqp://admin:admin@172.23.240.1:5672'
networks:
- rabbitmq_net
links:
- rabbit
nginx:
image: nginx:1.13
container_name: nginx
ports:
- 8000:80
volumes:
- ./config/nginx/conf.d:/etc/nginx/conf.d
- static:/code/static
volumes_from:
- custom_app
depends_on:
- custom_app
networks:
- rabbitmq_net
celery:
build: .
container_name: celery
command: celery -A djangoapp worker --loglevel=info -P eventlet debug
volumes:
- .:/code
depends_on:
- rabbit
networks:
- rabbitmq_net
volumes:
.:
postgres_data:
static:
networks:
rabbitmq_net:
name: rabbitmq_network
driver: bridge
Комментарии:
1. «это никогда не доходит» — это не так много информации, чтобы продолжать. Вы получаете исключение Python? Вы смотрели, есть ли что-нибудь в очереди? Может ли сельдерей успешно подключиться к очереди? Есть где-нибудь сообщения в журнале? На этот вопрос нельзя ответить так, как есть.