我目前有一个将任务发送到 resque 队列的 rails 应用程序。在 rails 应用程序中,进度条通过 ajax 轮询提供“完成百分比”读数。这一切都运行良好......除非 resque 关闭,在这种情况下,进度条永远为零,不会通知用户任务不会运行(至少,直到有人启动resque 工人)。
我的问题是:如果 resque 实际上没有启动,有什么方法可以将异常返回到 rails 应用程序?
我目前有一个将任务发送到 resque 队列的 rails 应用程序。在 rails 应用程序中,进度条通过 ajax 轮询提供“完成百分比”读数。这一切都运行良好......除非 resque 关闭,在这种情况下,进度条永远为零,不会通知用户任务不会运行(至少,直到有人启动resque 工人)。
我的问题是:如果 resque 实际上没有启动,有什么方法可以将异常返回到 rails 应用程序?
AFAIK我不认为这样的功能存在于resque中,至少v1-x-stable
我相信,
但Resque
没有什么方便的方法可以最终提供帮助
Resque::Worker.all
all
=> 返回在场工人 名单
Resque::Worker.working
=> 返回列表currently running workers
现在,如果您的队列是*
(全球队列),那么我相信
检查以上
Resque::Worker.all.empty?
或Resque::Worker.length == 0
或Resque::Worker.present?
会为你解决问题的
现在,如果您没有*
(GLOBAL QUEUE) 也许您需要挂钩一些代码来实现这一点(假设您的队列名称是progress_bar
)
Resque::Worker.all.map { |worker| worker worker.to_s.split(':') =~ /(\*|progress_bar)/ }.present?
我正在检查*
GLOBAL QUEUE和progress_bar
QUEUE,而且我不确定正则表达式是否损坏,我相信你可以检查一下
在任何给定时间,如果您想要有关 Resque worker 或 job Just 的元数据,Redis 都是很棒的信息来源。
希望这有帮助