Django + Celery 4 неправильные настройки

Я использую Django 1.10 и Celery 4.

Я нашел утечки в документации Celery :(

Конфигурация рабочего процесса выполнена хорошо, и он работает нормально (я вижу, что рабочий процесс подключен к веб-мини-серверу RabbitMQ). Но мои задачи не могут подключиться к RabbitMQ для публикации своих сообщений.

settings.py

CELERY_BROKER_URL = 'amqp://dev:dev@localhost/dev_virtualhost'
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'

celery.py

from __future__ import absolute_import
import os
from celery import Celery

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings')

app = Celery('dev_app')
app.config_from_object('django.conf:settings', namespace='CELERY')

app.autodiscover_tasks()

@app.task(bind=True)
def debug_task(self):
    print('Request: {0!r}'.format(self.request))

tasks.py

from celery import shared_task

@shared_task(queue='data_to_write')
def test_task(data):
    open('/tmp/test', 'w').write(data)

Из оболочки Django я запускаю этот код и терплю неудачу :(

test_task.delay('hello world')

AccessRefused: (0, 0): (403) ACCESS_REFUSED — вход в систему был отклонен с использованием механизма проверки подлинности AMQPLAIN. Подробности смотрите в лог-файле брокера.

В журналах RabbitMQ я вижу, что учетные данные — гость: гость, а не dev: dev, как я написал в settings.py.

Где моя ошибка? Спасибо


person nachopro    schedule 23.12.2016    source источник
comment
Вы используете сервер результатов? Если да, то как он настроен?   -  person Louis    schedule 28.12.2016
comment
Можем ли мы увидеть вашу конфигурацию RabbitMQ?   -  person Cloud Artisans    schedule 04.02.2017
comment
Я также вижу это. Очевидно любопытно, если вы решили это?   -  person rh0dium    schedule 18.05.2017


Ответы (1)


Решение состоит в том, чтобы переименовать celery.py в celery_app.py, чтобы избежать автоматического импорта.

Затем вы должны выполнить сельдерей таким образом: celery --app=PACKAGE.celery_app:app worker

ПАКЕТ — это модуль (папка), в который вы помещаете celery_app.py.

person nachopro    schedule 18.05.2017