运行 celery 时出现 Celery 和 Redis 错误

问题描述 投票:0回答:1

我正在使用 celery 和 redis 制作一个 django 应用程序,它可以异步更新股票价格。我现在正在处理后台任务,芹菜无法正常运行。我打开 Redis 服务器,然后打开 django 服务器,当我使用 celery -A celery worker -l info 打开 celery 服务器时,我收到此错误...

[2023-07-24 20:25:37,798: ERROR/MainProcess] consumer: Cannot connect to amqp://guest:**@127.0.0.1:5672//: [Errno 61] Connection refused.
Trying again in 2.00 seconds... (1/100)

上面还有这个,我想指出它没有连接到我提供的经纪人网址..

[2023-07-24 20:25:37,688: WARNING/MainProcess] No hostname was supplied. Reverting to default 'localhost'

[email protected] v5.3.1 (emerald-rush)

macOS-13.2.1-arm64-arm-64bit 2023-07-24 20:25:37

[config]
.> app:         default:0x101ecc220 (.default.Loader)
.> transport:   amqp://guest:**@localhost:5672//
.> results:     disabled://
.> concurrency: 8 (prefork)
.> task events: OFF (enable -E to monitor tasks in this worker)

[queues]
.> celery           exchange=celery(direct) key=celery


[tasks]

这是我的settings.py,

#celery settings
CELERY_BROKER_URL = "redis://localhost:6379"
CELERY_ACCEPT_CONTENT = 'application.json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TASK_SERIALIZER = 'json'
CELERY_TIMEZONE = 'America/New_York'
CELERY_RESULT_BACKEND = 'redis://localhost:6379'
CELERY_BEAT_SCHEDULER = 'django_celery_beat.schedulers:DatabaseScheduler'

这是我的celery.py,

from __future__ import absolute_import, unicode_literals
import os

from celery import Celery

# from django.conf import settings

# from celery.schedules import crontab

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings.\_base')

app = Celery('myproject')
app.conf.enable_utc = False
app.conf.update(timezone = 'America/New_York')

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

app.conf.beat_scheduler = {
'every-15-seconds': {
'task': 'apps.portfolio.tasks.update_ticker',
'schedule': 15,
'args': (\['IEMG', 'AAPL', 'SYF', 'MSFT', 'AMZN', 'GOOG', 'V', 'F'\])
},
}

app.autodiscover_tasks()

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

我尝试使用替代命令运行 celery,但这并没有启动 celery 服务器。我不知道还能尝试什么,帮忙

django redis celery
1个回答
0
投票

如文档中所述 -A 参数是应用程序的名称,您的应用程序名称是“myproject”

尝试这个命令:

celery -A myproject worker -l info

如果这不起作用,请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.