如何追踪已被终止的Sidekiq作业?

3

我想找一种方法来跟踪突然被杀死的Sidekiq作业。在Sidekiq文档中没有找到on_delete类似的操作,我能否实现一个这样的操作,以便在作业被突然删除时执行某些处理。

我查阅了Sidekiq Ruby Gem文档,但未找到解决方案。

我正在使用Sidekiq v5.0.4。


当你说“突然死亡”时,这些工作是如何被终止的?如果由于某种原因(例如第三方API宕机、互联网连接中断等),Sidekiq作业失败,可以将其设置为重试n次。如果您预计会发生这种情况,例如,您应该设置3次重试。例如,如果作业即使经过3次重试仍然失败,您想做什么? - lacostenycoder
通过控制台和Jib,它们正在被删除,这些可能是计划任务,因此它们可能甚至还没有开始。因此,它们不会被移动到失败队列。我想当开发人员删除计划任务时发送某种通知。这有意义吗? - krishna sai
开发人员为什么会删除工作?这似乎是一个不好的工作流程。 - lacostenycoder
我不太确定原因,但这种情况很少发生。我是否可以添加一些内容,以便在取消sidekiq作业时发送通知? - krishna sai
请查看我下面发布的答案。 - lacostenycoder
1个回答

1

当Sidekiq作业由于某些异常而死亡时,应使用重试设置进行重试

class SomeWorker
  include Sidekiq::Worker

  sidekiq_options retry: 3 # retry 3 times before dying 

  def perform
    # do stuff
  end
end

所有重试次数都失败的任务将进入死亡队列。

无法轻松监视因开发人员在控制台或删除操作中删除而从Sidekiq队列中删除的作业。一旦它们被删除,就没有什么可以连接的了,因为它们将从键/值存储即Redis中删除。

如果您想监视特定的作业状态,您可能需要查看sidekiq-status gem,它可以帮助解决这个问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接