添加后台作业。需要状态并向用户显示详细信息

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

我的网站上有一个任务在管理区域中运行,因此只能由我运行,并且运行大约需要 10 分钟。我刚刚将其转换为后台作业运行,效果非常好。

我的问题是,是否有某种我可以使用的 gem,可以轻松地让我将特定工作的状态带到我的应用程序中的特定视图。例如,显示它是否正在运行、是否出错、最后一个是否成功等?

我已将延迟作业与 ActiveJob 一起使用。该任务只能由我运行,并且不能有超过一个任务同时运行。该作业还有一个唯一命名的队列。

ruby-on-rails delayed-job rails-activejob
2个回答
0
投票

您可以通过检查

locked_at
locked_by
列来了解作业是否正在运行。

您可以使用

failed_at
列检查作业是否失败。

如果您没有足够的有关默认列的作业的信息,您可以向表中添加更多列并在作业运行时设置它们。例如,您可以添加

user_id
来跟踪该作业与哪个用户相关。

参考:延迟作业表详情


0
投票

在你的作业类中添加一个吸气剂:

def is_completed
  @is_completed ||= false
end

并将工作代码的最后一行设置为:

@is_completed = true

然后,有了作业对象,您可以通过调用来检查作业是否完成:

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