celery + redis无法连接到amqp:// guest:**@127.0.0.1:5672 //:[Errno 111]连接被拒绝

时间:2020-02-23 23:42:05

标签: django redis celery

我无法运行celery worker + redis + django。如果我运行此命令来检查celery worker是否准备好接收任务:

celery -A car_rental worker -l info

我收到此错误:

[2020-02-24 00:14:42,188: ERROR/MainProcess] consumer: Cannot connect to amqp://guest:**@127.0.0.1:5672//: [Errno 111] Connection refused.
Trying again in 2.00 seconds...

在我的settings.py中,我有这个:

BROKER_URL = 'redis://localhost:6379'

requirements.txt:

amqp==2.5.2, asgiref==3.2.3, billiard==3.6.2.0, celery==4.4.0, redis==3.4.1

celery.py:

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

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

app = Celery('car_rental')

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))

car_rental / 初始化 .py:

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

__all__ = ('celery_app',)

我的项目结构如下:

 car_rental
           /car_rental
               __init__.py
               celery.py
               setting.py

我不了解的是我正在broker_url = 'redis://localhost:6379'中使用,但是出现错误:Cannot connect to amqp://guest:**@127.0.0.1:5672//

2 个答案:

答案 0 :(得分:1)

在这种情况下,如果您将参数从BROKER_URL更改为CELERY_BROKER_URL,则它应该起作用。当您在此处为其命名空间时:

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

此时,您需要将BROKER_URL参数重命名为CELERY_BROKER_URL。

CELERY_BROKER_URL = 'redis://localhost:6379'

另一个例子:

app.config_from_object('django.conf:settings', namespace='CAR')
CAR_BROKER_URL = 'redis://localhost:6379'

答案 1 :(得分:0)

我厌倦了使用以下命令安装RabbitMQ

(venv) ~/OC_project13/car_rental$ sudo apt-get install rabbitmq-server

然后我检查了Rabbitmq是否在运行:

(venv) ~/OC_project13/car_rental$ systemctl status rabbitmq-server

● rabbitmq-server.service - RabbitMQ Messaging Server
   Loaded: loaded (/lib/systemd/system/rabbitmq-server.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2020-02-24 17:04:34 CET; 6min ago
 Main PID: 15243 (rabbitmq-server)
    Tasks: 92 (limit: 4915)
   CGroup: /system.slice/rabbitmq-server.service
           ├─15243 /bin/sh /usr/sbin/rabbitmq-server
           ├─15252 /bin/sh /usr/lib/rabbitmq/bin/rabbitmq-server
           ├─15457 /usr/lib/erlang/erts-9.2/bin/epmd -daemon
           ├─15531 /usr/lib/erlang/erts-9.2/bin/beam.smp -W w -A 64 -P 1048576 -t 5000000 -stbt db -zdbbl 32000 -K true -B i -- -root /usr/lib/erlang -p
           ├─15643 erl_child_setup 65536
           ├─15716 inet_gethost 4
           └─15717 inet_gethost 4

févr. 24 17:04:30 rouizi systemd[1]: Starting RabbitMQ Messaging Server...
févr. 24 17:04:30 rouizi rabbitmq[15244]: Waiting for rabbit@rouizi
févr. 24 17:04:30 rouizi rabbitmq[15244]: pid is 15252
févr. 24 17:04:34 rouizi systemd[1]: Started RabbitMQ Messaging Server.

现在运行celery worker服务器不会返回任何错误:

(venv) ~/OC_project13/car_rental$ celery -A car_rental worker -l INFO

-------------- celery@rouizi v4.4.0 (cliffs)

......
......

[2020-02-24 17:11:55,568: INFO/MainProcess] celery@rouizi ready.