RubyonRails—什么能让sidekiq工作人员产生错误的甚至不可能的方法响应

pgky5nke  于 2021-06-08  发布在  Redis
关注(0)|答案(1)|浏览(344)

我们有一个worker,它有一个bug,导致对调用的方法的错误响应。这个问题已经解决了,但是当我们重新启动后台工作人员时,我们似乎仍然遇到这个问题。
我们知道这个问题已经解决了,因为同时我们已经将逻辑移到了rake任务上,现在它工作得很好。我们怀疑这个问题与sidekiq队列中失败或未执行的作业有关。
我们试图通过以下方法清除redis db来克服这个问题:

Sidekiq.redis { |r| puts r.flushall }

有没有人在使用sidekiq/redis时遇到过类似的问题?你是如何克服的?

jyztefdp

jyztefdp1#

我想flushall可能会立即重试所有仍然失败,但仍然排队的作业
在大多数情况下,如果您在不更改签名的情况下修复了worker中的bug,您可以让它们重试(假设作业本身是幂等的,出于这个原因和其他原因建议这样做)。
但是,如果错误在您传递给异步作业调用的内容中,那么您必须删除所有这些条目,因为每次重试它们时,它们都会继续失败,默认情况下,这种情况可能持续数周。
我想你要做的是把它们都清除。。。您可以为特定队列执行此操作。如果这是一个问题,您可能需要通过检查作业条目来小心不要删除新排队的作业。如果你只想用核弹把他们都炸了:

queue = Sidekiq::Queue.new('your_queue')
queue.clear

相关问题