【问题标题】:Does django-celery-backend only save a record when the task completes?django-celery-backend 是否只在任务完成时保存记录?
【发布时间】:2019-05-02 14:14:49
【问题描述】:

我一直在对 django-celery-results 进行一些测试。

我发现任务结果仅在任务完成时存储,使用 sqlite db。

这对吗?

【问题讨论】:

    标签: django-celery celery-task


    【解决方案1】:

    我不熟悉 django-celery-results,但快速浏览一下它的代码表明它只是使用 django ORM 保存数据,这意味着应该适用与常规 celery 相同的规则。

    在这种情况下,是的,默认情况下只存储成功(您可以阅读更多关于它的信息here,但通常默认情况下只存储终端状态)。

    您可以通过将标志设置为跟踪 started 状态 more info here

    来调整它
    track_started = False
    

    请注意,Pending 状态并没有真正持久化,而是在不存在该任务的其他状态时返回 more info here

    【讨论】:

    • 这意味着应该适用相同的规则 celery成功了。
    • 另外任务要么挂起,要么完成,要么等待重试...但是在我的情况下,当我在本地运行时,从来没有挂起的TaskResult db 记录.
    • 使用track_started,db 记录会立即保存,但状态为STARTED 而不是PENDING
    • 待定状态是一种虚拟状态,它是当任务表中没有该任务 id 的行时得到的。这有点误导。
    猜你喜欢
    • 2019-06-15
    • 2014-03-16
    • 1970-01-01
    • 2013-02-02
    • 1970-01-01
    • 2021-10-15
    • 2012-04-07
    • 2015-12-25
    • 2013-03-06
    相关资源
    最近更新 更多