Докер: Не удается отправить задачу из Django в Сельдерей

#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? Вы смотрели, есть ли что-нибудь в очереди? Может ли сельдерей успешно подключиться к очереди? Есть где-нибудь сообщения в журнале? На этот вопрос нельзя ответить так, как есть.