【问题标题】:Getting latest tasks from Celery and display them using Django从 Celery 获取最新任务并使用 Django 显示它们
【发布时间】:2013-10-06 13:13:07
【问题描述】:

我有一个使用 Celery 3.0.23 和 RabbitMQ 3.1.5 的 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 数据库中。您可以考虑选择替代结果后端或一起禁用状态(请参阅结果后端)。
以下链接仅提供有关如何设置数据库连接而不是如何检索结果的参考。

【问题讨论】:

    标签: django sqlite celery django-celery


    【解决方案1】:

    试试这个:

    from djcelery.models import TaskMeta
    
    TaskMeta.objects.all()
    

    【讨论】:

      猜你喜欢
      • 2012-01-22
      • 1970-01-01
      • 1970-01-01
      • 2013-09-09
      • 1970-01-01
      • 2011-06-19
      • 2012-03-16
      • 2015-11-19
      • 1970-01-01
      相关资源
      最近更新 更多