ruby-on-rails - 是什么让 sidekiq 工作人员产生错误甚至不可能的方法响应
问题描述
我们有一个 Worker,它有一个错误,导致对被调用的方法做出错误的响应。该问题已得到解决,但是当我们重新启动后台工作人员时,我们似乎仍然遇到该问题。
我们知道问题已解决,因为与此同时,我们已将逻辑移至 rake 任务,它现在工作正常。我们怀疑该问题与 sidekiq 队列中的失败或未执行的作业有关。
我们试图通过使用以下方法清除 redis 数据库来克服这个问题:
Sidekiq.redis { |r| puts r.flushall }
有没有人在使用 Sidekiq/Redis 时遇到过类似的问题,你是怎么解决的?
解决方案
我认为 flushall 可能会立即重试所有仍然失败但仍在排队的作业
在大多数情况下,如果您在不更改签名的情况下修复了工作程序中的错误,您可能可以让他们重试(假设作业本身是幂等的,出于这个原因和其他原因有点推荐)。
但是,如果错误出在您传递给异步作业调用的内容中,那么您将必须删除所有这些条目,因为每次重试它们都会继续失败,默认情况下,可能会持续数周。
我认为您想要做的是清除所有这些...您可以为特定队列执行此操作。如果这是一个问题,您可能必须小心不要删除新排队的作业,也许通过检查作业条目。如果您只想对它们进行核对:
queue = Sidekiq::Queue.new('your_queue')
queue.clear
推荐阅读
- javascript - 为什么控制台不记录 [Object] 而不是我的数据?
- java - 将接收到的统计序列化为 json 文件
- pandas - catplot 问题 Axes 对象
- python - 如何在单元测试中伪造模块?
- javascript - 有没有办法使用js从html文本框中获取文本?
- node.js - PostgreSQL从多对多关系返回数据作为数组
- arduino - ttgo t-beam 和 SPI 解决 SD 卡问题
- javascript - 如何使用 jQuery 隐藏选定选项的某些文本值
- laravel - 如何使用数据透视表十月 Cms 确定结果范围
- grafana - Telegraf inputs.tail 与 zimbra.log