【问题标题】:celery save task to database芹菜将任务保存到数据库
【发布时间】:2014-07-22 13:14:22
【问题描述】:

所以在我之前的项目中我使用了django-celery,但在我当前的项目中我使用的是celery,因为djcelery THIS PROJECT IS NO LONGER REQUIRED

我使用 Redis 作为我的后端,我想跟踪所有已执行的任务,以便将来我可以进行一些比较,例如完成任务所花费的平均时间 6几个月前和现在。

我知道有像flower 这样的应用程序,但我发现它有点错误,我不确定任务是否已保存。我需要一些更可靠的东西,即使这意味着创建我自己的模型并强制 celery 保存我想要的任务和参数并在管理员中读取它。

这种方法是否正确,或者是否有内置的 celery 方法来跟踪该信息?

干杯

【问题讨论】:

    标签: django django-admin celery django-celery


    【解决方案1】:

    我仍在使用 django-celery 和最新版本的 Celery,因为它运行良好(Django 1.6 和 1.7)。不再需要它,但您仍然可以使用它。 celerycam 管理命令使用简单,可以对任务进行管理员监控。

    如果你追求官方的做事方式,我看不到比the celery documentation更好的方法

    django-celery celerycam 似乎使用 celery 控制台事件查看器来完成它的工作(代码如下)。然而,管理集成似乎是 djcelery 的唯一工作。看看djcelery/admin.py

    from __future__ import absolute_import, unicode_literals
    from celery.bin import events
    from djcelery.app import app
    from djcelery.management.base import CeleryCommand
    
    ev = events.events(app=app)
    
    class Command(CeleryCommand):
        """Run the celery curses event viewer."""
        options = (CeleryCommand.options
                   + ev.get_options()
                   + ev.preload_options)
        help = 'Takes snapshots of the clusters state to the database.'
    
        def handle(self, *args, **options):
            """Handle the management command."""
            options['camera'] = 'djcelery.snapshot.Camera'
            ev.run(*args, **options)
    

    【讨论】:

    • 我希望它保持官方状态并尽可能更新。你能告诉我 django-celery 是把这个任务保存到数据库还是它的芹菜?我的意思是我可以编写自己的自定义视图来仅使用 celery 查询该字段吗?
    • 我确实认为 django-celery 使用了与 celery 集成的东西。我正在更新我的答案以包含来自 celerycam 命令的一些代码。
    • 使用 celery cam 如何监控 2 个 celery 队列?出于某种原因,它只拍摄 1(传输队列)的快照,但我也有一个自定义的,它没有出现在管理员的任务中
    • 这个问题在这里问得很好:stackoverflow.com/q/24908403/977622 请看一下
    猜你喜欢
    • 2021-11-11
    • 2020-01-08
    • 1970-01-01
    • 2018-01-08
    • 1970-01-01
    • 2014-12-04
    • 2013-09-26
    • 1970-01-01
    • 2012-06-12
    相关资源
    最近更新 更多