从Celery获取最新任务并使用Django显示它们

时间:2013-09-30 15:33:48

标签: django sqlite celery django-celery

我使用带有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_taskmetacelery_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数据库中。您可以考虑选择备用结果后端或完全禁用状态(请参阅结果后端)。
在链接之后,只有关于如何设置数据库连接的参考,而不是如何检索结果。

1 个答案:

答案 0 :(得分:0)

试试这个:

from djcelery.models import TaskMeta

TaskMeta.objects.all()