Sidekiq多个从属作业,什么时候完成或重试?

问题描述 投票:0回答:1

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

报告具有一个或多个块(称为Chunk),它们将基于外部服务调用(API等)来生成一段内容

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

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

我将状态确定为draft (default)workingfinished。最终结果是所有服务项的组合。 “草稿”是指大块仍在队列中并且它们都没有开始生成任何内容的情况。

您如何使用Sidekiq解决这种情况?您如何跟踪(实时)哪些数据块的服务已完成,工作或失败,以便我们可以将报告标记为已完成或失败?

[我希望有一种方法可以定期检查作业以查看它们的位置,并在全部成功完成后更改状态,或者如果所有重试都放弃了,则将其标记为失败!

谢谢

在我的Rails应用程序中,我有一个称为Report的模型Report有一个或多个块(称为Chunk),这些块将根据外部服务调用(API等)在用户时生成一段内容...]]] >>

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

我们使用的是sidekiq状态的宝石:https://github.com/utgarda/sidekiq-status

这是粗略用法:

job_id = Job.perform_async()

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

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

希望这会有所帮助。

ruby-on-rails sidekiq
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.