【问题标题】:Restore lost tasks Redis python恢复丢失的任务 Redis python
【发布时间】:2021-09-15 20:08:26
【问题描述】:

我正在考虑在服务器关闭的情况下确保完成存储在 Redis 队列中的所有任务的方法,例如 我最初的想法是创建一个工作描述实例并将其保存到数据库中。比如:

class JobDescription(db.Model):
    id = Column(...)
    name = Column(...)
    queue_name = (...)
    is_started = (Boolean)
    is_finished = (Boolean)
    ....

然后在必要时更新布尔标志。

所以在 Flask/Django/FastApi 应用程序启动时,我会搜索未启动/未完成的作业。

我的问题是 - 对于我在此处描述的内容,是否有任何最佳实践或更好的方法来恢复丢失的工作,而不是保存到数据库工作描述?

【问题讨论】:

    标签: python redis python-rq


    【解决方案1】:

    你在正确的轨道上。要在 Redis 重启后恢复 Rq 任务, 您必须记录它们,以便确定哪些作业需要重新延迟(排队)。

    您使用的 JobDescription 方法可以正常工作,但需要注意的是,随着时间的推移,JobDescription 的基础表会变大,除非您在其上构建二级索引,否则查询该表将需要更长的时间is_finished.

    您可能会发现使用日期时间而不是布尔值可以为您提供更多选择。例如

    started_at = db.Column(db.DateTime)
    finished_at = db.Column(db.DateTime, index=True)
    

    让您回答几个有用的问题,例如随着时间的推移,作业请求中是否存在有趣的模式,完成延迟如何随时间变化等等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-14
      • 1970-01-01
      • 1970-01-01
      • 2021-03-09
      • 1970-01-01
      • 1970-01-01
      • 2019-03-28
      • 2015-08-19
      相关资源
      最近更新 更多