我无法运行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//
答案 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.