暴力方法:
# 此方法会重新设置redis的key,将会会进入到失败队列
# “cancelled-”是你的sidekiq中redis的命令空间 例如 sidekiq:status: => 例如 Sidekiq.redis {|c| c.set("sidekiq:status:#{jid}", "123456") }
Sidekiq.redis {|c| c.set("cancelled-#{jid}", "自定义key") }
理性方法:将方法最好定义在MyWorker下
def cancel! job_id
# 过期时间
cancel_second = 1
# 立即执行 设置过期时间 终止执行 将进入重试
Sidekiq.redis {|c| c.setex("sidekiq:status:#{job_id}", cancel_second, 1) }
end
此方法会将执行中的sidekiq放入重试中。
1.如果是worker任务的话,你只需要 在worker添加配置
sidekiq_options retry: 1
2.如果是 ActiveJob引用sidekiq的话,你需要在执行的时候放入以下部分
ApplicationJob.set(retry: false).perform_later
set(retry: boolean) true 是重试,false不重试