是什么让 sidekiq worker 产生错误甚至不可能的方法响应

What can make a sidekiq worker produce eroneous or even impossible method responses

我们有一个 Worker,它有一个错误导致对被调用的方法做出错误的响应。该问题已得到解决,但是当我们重新启动后台工作程序时,我们似乎仍然遇到该问题。

我们知道问题已解决,因为与此同时我们已将逻辑移至 rake 任务并且现在工作正常。我们怀疑该问题与 sidekiq 队列中失败或未执行的作业有关。

我们尝试通过以下方法清除 redis 数据库来克服这个问题:

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

有没有人在使用时遇到过类似的问题Sidekiq/Redis,你是怎么克服的?

我认为 flushall 可能会立即重试所有仍然失败但仍在排队的作业

在大多数情况下,如果您在不更改 签名 的情况下修复工作程序中的错误,您也许可以让他们重试(假设作业本身是幂等的由于这个原因和其他原因有点推荐)。

但是,如果错误出在您传递给异步作业调用的内容中,那么您将不得不删除所有这些条目,因为它们每次都会继续失败它们会被重试,默认情况下会持续数周。

我认为您想做的是将它们全部清除...您可以针对特定队列执行此操作。您可能需要注意不要删除新排队的作业,如果这是一个问题,可能要检查作业条目。如果你只是想用核武器摧毁他们:

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