我的网站上有一个任务在管理区域中运行,因此只能由我运行,并且运行大约需要 10 分钟。我刚刚将其转换为后台作业运行,效果非常好。
我的问题是,是否有某种我可以使用的 gem,可以轻松地让我将特定工作的状态带到我的应用程序中的特定视图。例如,显示它是否正在运行、是否出错、最后一个是否成功等?
我已将延迟作业与 ActiveJob 一起使用。该任务只能由我运行,并且不能有超过一个任务同时运行。该作业还有一个唯一命名的队列。
您可以通过检查
locked_at
或 locked_by
列来了解作业是否正在运行。
您可以使用
failed_at
列检查作业是否失败。
如果您没有足够的有关默认列的作业的信息,您可以向表中添加更多列并在作业运行时设置它们。例如,您可以添加
user_id
来跟踪该作业与哪个用户相关。
参考:延迟作业表详情
在你的作业类中添加一个吸气剂:
def is_completed
@is_completed ||= false
end
并将工作代码的最后一行设置为:
@is_completed = true
然后,有了作业对象,您可以通过调用来检查作业是否完成:
job.is_completed