Sidekiq 在不终止的情况下重试旧工作
Sidekiq retrying old job without termination
我们将作业从 JobA 重命名为 JobB。部署更改时,队列中有一些作业。现在旧的 Job 不断被重试并不断失败。下面这个工作实际上是在 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}"
}
如何清除 class 个作业的重试队列?
这对我来说适用于大多数 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 }
我们将作业从 JobA 重命名为 JobB。部署更改时,队列中有一些作业。现在旧的 Job 不断被重试并不断失败。下面这个工作实际上是在 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}"
}
如何清除 class 个作业的重试队列?
这对我来说适用于大多数 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 }