【发布时间】:2020-06-06 14:37:46
【问题描述】:
在我的 Rails 应用程序中,我有一个名为 Report 的模型
报告有一个或多个块(称为Chunk),它们会根据外部服务调用(API 等)生成一段内容
当用户请求生成报告时,通过使用Sidekiq,我将“块的作业”排队以便在后台运行它们并通知用户我们将在生成报告后通过电子邮件将结果发送给他们。
Report 使用状态机来标记是否所有作业都已成功完成。在我们将报告标记为就绪之前,必须完成所有块。如果失败了,我们要么再试一次,要么在某个时候放弃。
我将状态确定为draft (default)、working、finished 最终结果是所有服务部分的组合。 “草稿”是当块仍在队列中并且它们都没有开始生成任何内容时。
您将如何使用 Sidekiq 解决这种情况?您如何跟踪(实时)哪些块的服务已完成、工作或失败,以便我们可以标记报告已完成或失败?
我希望找到一种方法来定期检查作业以查看它们的位置,并在它们全部成功完成时更改状态,或者如果所有重试都放弃,则将其标记为失败!
谢谢
【问题讨论】:
标签: ruby-on-rails sidekiq