gpt4 book ai didi

django - 如何找出 Celery 设置中缺少的内容?

转载 作者:可可西里 更新时间:2023-11-01 11:21:31 26 4
gpt4 key购买 nike

对于我们的一个 Django 网站,我们需要运行 Celery。

我们在 settings.py 中对 Celery 使用以下设置:

BROKER_URL = "redis://<ip address of the server>:6379/0"
CELERY_RESULT_BACKEND = "redis"
CELERY_REDIS_HOST = "<ip address of the server>"
CELERY_REDIS_PORT = 6379
CELERY_REDIS_DB = 0

Redis 正常运行:

$ redis-cli ping
PONG

我们用这个命令启动 Celery 服务器:

$ nohup python manage.py celeryd start

我们还有一个带有 Celery 任务的测试应用程序,但是当我们尝试使用它时,结果从未给出并且任务挂起:

$ python manage.py shell
>>> from celerytest.tasks import add
>>> result = add.delay(2, 2)
>>> result.ready() # returns True if the task has finished processing.
False
>>> result.result
None
>>> result.get()

我们正在使用 Django 1.3.7、Celery 3.0.9 和 djcelery 3.0.9。

我们如何找到导致 Celery 任务挂起的原因?

最佳答案

我认为您需要使用 -EB 选项运行 celeryd 命令。您也可以在前台运行它以确保在将其发送到后台之前一切正常。

例如

python manage.py celeryd -EB -l debug

我认为对于日志记录你应该使用类似下面的东西来实例化你的记录器:

from celery.utils.log import get_task_logger

log = get_task_logger(__name__)

在您的设置中,您可能还需要检查此设置:

CELERYD_HIJACK_ROOT_LOGGER = False

这样我认为您应该能够看到日志。

关于django - 如何找出 Celery 设置中缺少的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28416071/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com