Sidekiq Scheduler 定时代理任务
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/run-scheduled-ruby-agent-jobs-with-sidekiq-scheduler
技能介绍
要解决的具体问题
在 Ruby 与 Sidekiq 环境中,经常需要把周期性任务(刷新、评估、报告、维护、队列驱动自动化)跑成可靠的计划任务。临时加 crontab 或散落在业务逻辑里的 sleep、轮询,很容易导致:
- 调度入口不统一:任务触发方式各异,难以审计和回放。
- 周期规则分散:时间表达式、间隔、动态调度混在代码里,变更成本高。
- 运行反馈缺失:缺少结构化日志与错误处理,长任务容易互相阻塞或重复执行。
- 环境约束不清:未明确依赖 Sidekiq、Redis、
sidekiq-schedulergem 与sidekiq.yml,上线后才发现配置缺失。
技能如何工作
该技能面向已经使用 Sidekiq 的 Ruby 应用,借助 sidekiq-scheduler 把重复型代理任务收敛到统一调度体系:
- 用 cron 风格表达式 声明周期规则,让刷新、评估、报告等流程可预测、可维护。
- 通过 Sidekiq worker 类 承载任务体,继续复用现有队列、并发与重试策略。
- 在
sidekiq.yml中配置 scheduler,将计划任务交给调度器统一触发。 - 使用
sidekiq-schedulergem 提供的调度能力,将业务代码与触发机制解耦。 - 关键步骤包括:定义 worker 与任务逻辑、维护调度配置、启动调度器、按队列约定执行,以及为失败任务配置告警与重试策略。
适用边界与注意点
- 必须已有 Ruby 应用 + Sidekiq + Redis,并安装
sidekiq-schedulergem;纯脚本或非 Sidekiq 队列不适用。 - 需要预先定义 Sidekiq worker classes 和 sidekiq.yml scheduler configuration,否则任务不会被正确注册或触发。
- 长任务要评估执行时长、重叠风险与重试策略,避免一个慢任务拖垮后续周期。
- 动态调度(如运行中调整周期)会带来可观测性挑战,建议配合日志、指标与告警使用。
- 调度器异常、Redis 抖动、worker 报错都需要纳入运维预案,必要时增加幂等与去重。
使用场景
- 应用已接入 Sidekiq 与 Redis,需要把模型评估或数据刷新做成按 cron 表达式周期执行的 worker 任务。
- 团队要用 sidekiq.yml 统一管理周期性报告生成,并通过 Sidekiq 队列执行与重试。
- 已有 Sidekiq worker,想用 sidekiq-scheduler 驱动维护类任务,例如定期清理、健康检查、归档。
- 队列中积压了自动化事件,需要按计划把事件交给 Sidekiq worker 分批消费,而不是临时轮询。
适合人员
- Ruby 后端工程师:需要把重复型代理任务迁移到 Sidekiq Scheduler 统一触发。
- 平台工程师:负责维护 Sidekiq、Redis 与调度配置,并排查 worker 执行异常。
- 数据/评估工程师:要在生产 Ruby 服务里周期性运行刷新、评估和报告任务。