0

我目前有一个将任务发送到 resque 队列的 rails 应用程序。在 rails 应用程序中,进度条通过 ajax 轮询提供“完成百分比”读数。这一切都运行良好......除非 resque 关闭,在这种情况下,进度条永远为零,不会通知用户任务不会运行(至少,直到有人启动resque 工人)。

我的问题是:如果 resque 实际上没有启动,有什么方法可以将异常返回到 rails 应用程序?

4

1 回答 1

1

AFAIK我不认为这样的功能存在于resque中,至少v1-x-stable我相信,

Resque没有什么方便的方法可以最终提供帮助

  1. Resque::Worker.allall=> 返回在场工人 名单

  2. Resque::Worker.working => 返回列表currently running workers

情况1 :

现在,如果您的队列是*(全球队列),那么我相信

检查以上

Resque::Worker.all.empty? Resque::Worker.length == 0Resque::Worker.present?

会为你解决问题的

案例2

现在,如果您没有*(GLOBAL QUEUE) 也许您需要挂钩一些代码来实现这一点(假设您的队列名称是progress_bar

Resque::Worker.all.map { |worker| worker worker.to_s.split(':') =~ /(\*|progress_bar)/ }.present?

笔记:

我正在检查* GLOBAL QUEUEprogress_barQUEUE,而且我不确定正则表达式是否损坏,我相信你可以检查一下

最后提示:

在任何给定时间,如果您想要有关 Resque worker 或 job Just 的元数据,Redis 都是很棒的信息来源。

希望这有帮助

于 2013-07-30T07:27:26.467 回答