由于某些逻辑错误,我的sidekiq作业失败了。这项工作会重试多少次?失败的工作去哪儿了?失败的作业是否在redis中重新排队?
另外,sidekiq流程究竟是什么? sidekiq如何启动一个流程以使工作入队,另一个流程使工作出列?那里的事情发生了什么?
答案 0 :(得分:2)
不是所有问题的答案,而是一些有用的信息:
来自sidekiq Wiki:“如果你没有在25次重试(大约21天)内修复错误,Sidekiq将停止重试并将你的工作转移到Dead Job Queue。你可以修复bug并重试使用Web UI在接下来的6个月内随时手动完成工作....“ - (https://github.com/mperham/sidekiq/wiki/Error-Handling#best-practices)
如果您希望在you-domain/sidekiq
(或您设置的任何内容)实时监控工作,请阅读以下设置路线的方法:https://github.com/mperham/sidekiq/wiki/Problems-and-Troubleshooting#sidekiq-web-does-not-render-correctly-in-production-but-works-fine-in-development
要在开发中杀死失败的作业,我从rails控制台运行$redis.flushdb
。这将取消所有排队的作业。我从来不需要杀死一个,但我确信它有可能以某种方式。
您可以通过此Wiki页面中的选项配置作业重试:https://github.com/mperham/sidekiq/wiki/Error-Handling#configuration
例:
sidekiq_options :retry => 5 # Only five retries and then to the Dead Job Queue
为了避免多个入门级问题,请阅读最佳做法页面:https://github.com/mperham/sidekiq/wiki/Best-Practices 特别要注意点: 2。使您的工作具有幂等性和交易性
总体而言,他们拥有非常好的维基,可回答大多数问题。