首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >还原丢失的任务Redis python

问还原丢失的任务Redis python
EN

Stack Overflow用户
提问于 2021-07-05 07:17:36
回答 1查看 82关注 0票数 1

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

代码语言:javascript
复制
class JobDescription(db.Model):
    id = Column(...)
    name = Column(...)
    queue_name = (...)
    is_started = (Boolean)
    is_finished = (Boolean)
    ....

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

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

我的问题是-有没有我在这里描述的最佳实践,或者有更好的方法来恢复失去的工作,而不是保存到数据库的工作描述?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-05 08:09:28

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

您正在使用的JobDescription方法可以很好地工作,但需要注意的是,随着时间的推移和JobDescription的底层表变得更大,除非在is_finished上构建辅助索引,否则查询该表将需要更长的时间。

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

代码语言:javascript
复制
started_at = db.Column(db.DateTime)
finished_at = db.Column(db.DateTime, index=True)

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68249431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档