【问题标题】:Django and Celery: admin task list does not display valuesDjango 和 Celery:管理任务列表不显示值
【发布时间】:2012-06-21 08:08:51
【问题描述】:

我的问题应该相当简单,与其说是急需解决的问题,不如说是一个有趣的问题。谷歌无法给我我正在寻找的答案,所以我希望你的专业知识可以帮助我。我正在使用:

Django 1.4
Celery 2.5.5
Redis 2.4.10 (latest version on homebrew?)

我正在使用以下命令运行所有内容:

redis-server /usr/local/etc/redis.conf
foreman run python manage.py runserver
foreman run "python manage.py celeryd -E -B --loglevel=INFO"
foreman run python manage.py celerycam

在我的 settings.py 中,我为 Celery 设置了以下配置:

import djcelery
djcelery.setup_loader()

BROKER_URL = redis
CELERY_RESULT_BACKEND = 'redis'
CELERY_REDIS_HOST = "localhost"
CELERY_REDIS_PORT = 6379
CELERY_REDIS_DB = 0

CELERY_SEND_TASK_ERROR_EMAILS = True
CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'
CELERY_TASK_RESULT_EXPIRES = 172800  # 48 hours.

有了这个配置,一切似乎都在工作,除了一件事:

使用 django-celery,您可以自动在 django 管理员中获得 celery 集成(整洁!),您可以检查所有未过期任务的状态并安排新任务等。

在后台的任务列表中,没有显示任何值,这意味着所有的值都是无。当我单击一个值时,我可以看到详细信息,因此看起来它们确实被正确收集了。这只是一个细节,但它让我很恼火。

它没有在列表中显示这些值的原因可能是什么?我可以做些什么来解决它?

提前致谢

编辑:截图

所以这里有一些截图,你可以看到所有的值,比如 uuid 等都是 None,但它确实可以看到任务是否完成。在第二个屏幕截图中,您可以看到详细信息页面(单击任务后),这里包含所有信息。

第二张图:

【问题讨论】:

  • “在管理员的任务列表中,没有显示任何值,意味着所有的值都是无”是什么意思:你看到有状态的任务(例如STARTED,SUCCESS,FAILURE) ?如果是这样,这意味着 celerycam 工作正常。你在说什么价值观?
  • 请看我添加到帖子中的图片

标签: django django-admin redis celery django-celery


【解决方案1】:

我也有这个。它似乎是 django-celery 中的一个错误。如果你想修复这个问题,你应该更新你的 django-celery 版本(它已在 django-celery 中的this commit 中修复)。

如果您更改以下内容(在函数fixedwidth 中的djcelery.admin_utils):

return """<span title="%s", style="font-size: %spt;\
                font-family: Menlo, Courier; ">%s</span>""" % (
    escape(val[:255]), pt, escape(shortval)).replace("|br/|", "<br/>")

进入:

    return ("""<span title="%s", style="font-size: %spt;\
                    font-family: Menlo, Courier; ">%s</span>""" % (
        escape(val[:255]), pt, escape(shortval))).replace("|br/|", "<br/>")

然后这些值会出现在管理员中。

【讨论】:

  • 不幸的是,这不是一个选项,因为 heroku 不允许这样做,并且使用 git clone 而不是 pip install 来完成这个简单的事情也不会做。希望2.6版本能尽快稳定!
  • 您可以对代码进行猴子补丁以使其在当前版本中工作。
【解决方案2】:

我也有同样的错误。 给出的关于更新 admin_utils.py 的示例虽然有一个小错误! 您需要进行的替换是:

在 admin_utils.py 顶部添加 FIXEDWIDTH_STYLE:

FIXEDWIDTH_STYLE = '''\
<span title="%s", style="font-size: %spt; \
font-family: Menlo, Courier; ">%s</span> \
'''

然后替换:

return """<span title="%s", style="font-size: %spt;\
                font-family: Menlo, Courier; ">%s</span>""" % (
    escape(val[:255]), pt, escape(shortval)).replace("|br/|", "<br/>")

与:

styled = FIXEDWIDTH_STYLE % (escape(val[:255]), pt,escape(shortval))
return styled.replace("|br/|", "<br/>")

您可以在上面的 github 链接中更清楚地看到它。 完美运行! 干杯!

【讨论】:

    猜你喜欢
    • 2012-01-22
    • 2011-07-23
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    • 2015-06-16
    • 2016-03-22
    • 1970-01-01
    • 2015-05-16
    相关资源
    最近更新 更多