Sidekiq 多个依赖作业,何时完成或重试?



在我的Rails应用程序中,我有一个名为Report

报表具有一个或多个块(称为Chunk(,这些块将基于外部服务调用(API 等(生成一段内容。

当用户请求生成报告时,通过使用Sidekiq,我将"块的作业"排队,以便在后台运行它们,并通知用户我们将在生成报告后通过电子邮件将结果发送给他们。

Report使用状态机来标记是否所有作业都已成功完成。在将报表标记为就绪之前,必须完成所有区块。如果一个失败了,我们需要再试一次,或者在某个时候放弃。

我确定状态为draft (default)workingfinished完成结果是所有服务组合在一起。"草稿"是指块仍在队列中并且它们都没有开始生成任何内容。

您将如何与Sidekiq一起解决这种情况?您如何跟踪(实时(哪个块的服务已完成,工作或失败,以便我们可以标记报告已完成或失败?

我希望看到一种方法来定期检查作业以查看它们所处的位置,并在它们都成功完成时更改状态,或者在所有重试都放弃时标记它失败!

谢谢

在我们的应用程序中,我们也有类似的需求来确定在自动化测试期间何时完成 sidekiq 作业。

我们使用的是 sidekiq-status gem:https://github.com/utgarda/sidekiq-status

以下是粗略的用法:

job_id = Job.perform_async()

然后,将作业 ID 传递到它将尝试检查作业状态的位置

Sidekiq::Status::status job_id #=> :working, :queued, :failed, :complete

希望这有帮助。

这是一个名为Batches的Sidekiq Pro功能。

https://github.com/mperham/sidekiq/wiki/Batches

最新更新