2016-03-01 180 views
3

我正在构建一个用于在Celery框架之上执行任务的框架。Celery任务历史

我想看到的最近执行的任务的列表(最近2-7天)。

找上了API我可以找到app.backend对象,但无法弄清楚如何使查询获取任务。

例如,我可以像使用Redis的或后端数据库。我不想显式地将SQL查询写入数据库。

有没有办法与API任务历史/结果工作?

我试图用花,但它只能处理事件和其开始之前无法获得的历史。

+2

退房Django的芹菜,我认为它已经提供了任务 – Ale

+0

管理员看来你可能是正确的。我不想在这个项目中使用django,但它可能需要djcelery提供的相同功能。 – baldr

回答

1

您需要将任务结果保留在后端,例如Redis。芹菜文件包含有关如何做到这一点这里的信息:

http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html#keeping-results

而且你要设置的CELERY_TASK_RESULT_EXPIRES配置参数,因为默认情况下,结果在一天后丢弃。

如果你这样做,那么花会告诉你任务执行的从什么时候开始的历史,irregardless。

+0

是的,我试过这种方式,但它不起作用。这就是我问的原因。在花的来源中,我发现它仅适用于事件。通过后端API,可以获得任务的结果,但只知道它是ID。这可能是'djcelery'将是我最需要的。 – baldr

+0

@baldr你是如何解决这个问题的?我有同样的问题... – Kapucko

+0

@Kapucko,我留下了一个想法,用芹菜解决这个问题。当任务开始时,我在数据库中创建一个新记录。我终于把这个项目交给了django。 – baldr

2

可以使用的persisent选项,如:flower -A ctq.celery --persistent=True

+0

这是为什么倒投了?这似乎是合理的。谁投下了票请澄清,因为我想知道为什么这是一个坏主意。 – digitaldavenyc

+0

这是个不错的主意。因为我用中文而投下了票! 23333 –