我有一个后台工作,使用Sidekiq连接到我的另一个服务:
def perform(id)
user = ABCClient.instance.user(id)
...
end
有时这个ABCClient已关闭,我想在这种情况下重新安排“执行”工作。 像这样:
def perform(id)
begin
user = ABCClient.instance.user(id)
rescue => e
# Reschedule job
end
...
end
答案 0 :(得分:5)
https://github.com/mperham/sidekiq/wiki/Scheduled-Jobs
rescue => e
self.class.perform_in(5.minutes, id)
end
答案 1 :(得分:0)
在 2021 年,使用 Rails >= 6.0.1,您只需设置 sidekiq_options retry: 5
https://github.com/mperham/sidekiq/wiki/Active-Job#customizing-error-handling