如何在 sidekiq 中模拟立即重试按钮

How to emulate the retry now button in sidekiq

使用 Sidekiq v5.1.3,我有一个场景,理想情况下应该允许用户通过自定义仪表板从 "morgue" 手动重试死作业。

我绝对可以使用 Sidekiq 自己的网站 UI 中 dead 选项卡下的 "Retry now" 按钮来执行此操作,但我不知道如何从我自己的应用程序中以编程方式调用它。

由于文档明确指出:

The Web UI uses the API exclusively - anything you can do in the UI can be scripted with the API.

我想知道如何使用工作 ID 或任何其他信息来执行此操作...

使用Sidekiq::DeadSet,这是可能的。

例如,您可以列出所有死掉的工作:

Sidekiq::DeadSet.new.to_a

这将 return 一个包含 Sidekiq::SortedEntry 个实例的数组,您可以 运行 #retry 打开它。

或者,如果你有jid,你可以通过单个

查找:

job = Sidekiq::DeadSet.new.find_job('02df57719b59ab3a2b3ca3f8')
job.retry

这是 Sidekiq API 的一部分。