Sidekiq在没有终止的情况下重试旧工作

时间:2017-08-02 19:12:52

标签: ruby-on-rails ruby-on-rails-4 sidekiq

我们将JobA的工作重新命名为JobB。部署更改时,队列中有一些作业。现在旧的工作一直在重试并且一直在失败。下面这份工作实际上已经在3周前排队了,而Sidekiq仍然在重试它。

{
  "context": "Job raised exception",
  "job": {
    "args": [
      5105
    ],
    "class": "JobA",
    "created_at": 1499822416.4738095,
    "enqueued_at": 1499822417.145876,
    "jid": "b32957f3e0ad6b89b1331e46",
    "queue": "default",
    "retry": true
  },
  "jobstr": "{\"class\":\"JobA\",\"args\":[5105],\"retry\":true,\"queue\":\"default\",\"jid\":\"b32957f3e0ad6b89b1331e46\",\"created_at\":1499822416.4738095,\"enqueued_at\":1499822417.145876}"
}

如何清除一类作业的重试队列?

1 个答案:

答案 0 :(得分:4)

对大多数sidekiq版本来说,这对我有用:

Sidekiq::RetrySet.new.clear

Sidekiq::ScheduledSet.new.clear

清除统计信息

Sidekiq::Stats.new.reset

清除特定职位

rogue = Sidekiq::RetrySet.new.select { |job| /JobA/.match(job.value) }
rogue.each { |job| job.delete }