我使用带有RabbitMQ 3.1.5的Celery 3.0.23的Django 1.5.1 webapp。和sqlite3。
我可以使用简单的result = status.tasks.mymethod.delay(parameter)
提交作业,所有任务都可以正确执行:
[2013-09-30 17:04:11,369: INFO/MainProcess] Got task from broker: status.tasks.prova[a22bf0b9-0d5b-4ce5-967a-750f679f40be]
[2013-09-30 17:04:11,566: INFO/MainProcess] Task status.tasks.mymethod[a22bf0b9-0d5b-4ce5-967a-750f679f40be] succeeded in 0.194540023804s: u'Done'
我想在页面中显示最近提交的10个作业及其状态。 Django有没有办法获得这样的对象?我在数据库中看到了几个表(celery_taskmeta
和celery_taskmeta_2ff6b945
)并尝试了一些accesses to the objects但Django始终显示AttributeError
页面。
从Django访问Celery结果的正确方法是什么?
做
cel = celery.status.tasks.get(None)
cel = status.tasks.all()
不起作用,导致前面提到的AttributeError。 (status
是我的应用的名称)
编辑:我确信任务已保存,this small tutorial说:
默认情况下,django-celery将此状态存储在Django数据库中。您可以考虑选择备用结果后端或完全禁用状态(请参阅结果后端)。
在链接之后,只有关于如何设置数据库连接的参考,而不是如何检索结果。
答案 0 :(得分:0)
试试这个:
from djcelery.models import TaskMeta
TaskMeta.objects.all()