队列中任务异常停止时不丢失, python 优雅实现?

2016-11-18 23:18:39 +08:00
 Chyroc

如题,在队列中由一些任务,但是可能遇到一些状况,可能意料中的,可能意料外的,怎么保证异常停止时候,队列中的任务不丢失?

2227 次点击
所在节点    Python
9 条回复
julyclyde
2016-11-18 23:32:48 +08:00
那你用外部的队列呗
redis 或者 rabbitMQ
都是可以存盘的
ihuotui
2016-11-18 23:43:16 +08:00
思考数据库如何实现
ihuotui
2016-11-18 23:48:04 +08:00
像 java 的优雅关闭
reus
2016-11-19 00:00:31 +08:00
用外部数据库事务。
billlee
2016-11-19 00:34:20 +08:00
持久化到磁盘上
darrenfang
2016-11-19 08:12:59 +08:00
让队列提供这样的功能吧
yidinghe
2016-11-19 08:38:21 +08:00
出现异常时,再将任务丢回到队列?
lecher
2016-11-19 09:12:53 +08:00
用外部持久化方案,比如取任务时,将任务相关数据持久化并标识处理中,当超时未更新处理状态则认为此任务出现异常,重新回滚到任务队列。
也可以增加重试次数,任务超过限制次数仍然超时无法处理完,才确认为失败任务。

不想写也可以用类似参考阿里云的消息队列模型,取出来的消息有处理时间限制,会存放在处理中的队列,完成消息需要发送任务成功的标识,通知消息系统主动删除消息数据。
如果消息超时没有收到处理成功的请求,消息系统会主动回滚此消息到等待队列中。
ansheng
2016-11-19 09:33:53 +08:00
rabbitMQ 吧,只有任务执行完毕才会删除任务,不然不会删除。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/321604

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX