Sidekiq super_fetch 恢复的任务是从头执行还是从中断处继续?
Sidekiq Pro super_fetch 恢复作业执行逻辑解答
你使用 5.2.1 版本 Sidekiq Pro 的 super_fetch 功能恢复的作业,会从 Worker 的起始位置重新完整执行,不会从中断位置继续运行。
底层逻辑说明
- Sidekiq 所有作业入队时,仅会序列化存储 Worker 类名、执行入参、队列归属、重试规则这类基础元信息,不会持久化作业执行过程中的中间状态、进度节点,原生不支持断点续跑能力。
super_fetch的核心实现是给正在执行的作业添加临时租约:如果 Sidekiq 进程异常退出,没有正常清理执行中的作业标记,租约超时后super_fetch会将对应作业重新推入队列调度,本质和普通的作业重试逻辑一致,相当于触发一次全新的作业执行。
业务适配建议
如果你的业务场景中,Worker 执行到一半中断后重复执行会产生脏数据或业务异常,需要自行给 Worker 实现幂等性校验逻辑,避免重复执行带来的数据一致性问题。
内容的提问来源于stack exchange,提问作者Shabini Rajadas
相关产品推荐
相关产品推荐

