首页 > 解决方案 > 在 Celery 和 Django 中没有这样的带有 RabbitMQ 的传输 RPC

问题描述

Celery:4.3.0(大黄)和 Python 3.7 版本。

我尝试启动芹菜工人:

celery -A proj_name worker -l 信息

我收到以下错误:

KeyError: 'No such transport: rpc'

我在 Django 中的 celery 配置:

LATE_RETRY_QUEUE_NAME = 'late_retry'
FAIL_AUDIT_QUEUE_NAME = 'fail_audit'

# Celery configs
CELERY_BROKER_URL = 'rpc://guest:guest@localhost:5672'
CELERY_RESULT_BACKEND = 'rpc://guest:guest@localhost:5672'
CELERY_TASK_DEFAULT_QUEUE = 'default'
CELERY_QUEUES = {
    Queue(LATE_RETRY_QUEUE_NAME, routing_key=LATE_RETRY_QUEUE_NAME),
    Queue(FAIL_AUDIT_QUEUE_NAME, routing_key=FAIL_AUDIT_QUEUE_NAME)
}

Celery 配置是文档中的标准配置:

celery.py (/proj/proj_name/celery.py)

from __future__ import absolute_import, unicode_literals
import os
from celery import Celery

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

app = Celery('proj_name')

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

# Load task modules from all registered Django app configs.
app.autodiscover_tasks()


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

init .py (/proj/proj_name/ init .py) [忽略缺少的下划线,此处无法格式化]

from __future__ import absolute_import, unicode_literals
from .celery import app as celery_app

__all__ = ('celery_app',)

出了什么问题?

标签: python-3.xcelerydjango-celery

解决方案


推荐阅读