我的问题应该是相当简单的,而不是需要拼命修复的问题。谷歌无法给我我想要的答案,所以我希望你的专业知识可以帮助我。我正在使用:
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 admin中自动获得芹菜整合(整洁!),您可以检查所有未过期的任务的状态并安排新任务等。
在admin的任务列表中,不显示任何值,表示所有值均为None。当我点击一个值时,我可以看到详细信息,所以它看起来确实正在被正确收集。这只是一个细节,但它让我很烦恼。
可能是因为它没有在列表中显示这些值,我该怎么做才能修复它?
提前致谢
编辑:屏幕截图
所以这里有一些截图,因为你可以看到像uuid等所有的值都是None,但它确实看到任务完成与否。在第二个屏幕截图中,您可以看到详细信息页面(在您单击任务后),此处它包含所有信息。
第二张图片:
答案 0 :(得分:2)
我也有这个。它似乎是django-celery中的一个错误。如果你想修复它,你应该更新你的django-celery版本(它已经在django-celery的this commit修复了。)
如果您更改以下内容(在djcelery.admin_utils
函数fixedwidth
处):
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/>")
然后值会出现在管理员中。
答案 1 :(得分:1)
我也有同样的错误。 有关更新admin_utils.py的示例虽然有轻微错误! 您需要进行的替换是:
在admin_utils.py:
的顶部添加FIXEDWIDTH_STYLEFIXEDWIDTH_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链接中更清楚地看到它。 作品完美! 干杯!