如何查找Celery设置中缺少的内容



对于我们的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和dj芹菜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

那样的话,我认为你应该能够看到日志。

相关内容

  • 没有找到相关文章

最新更新