1

我有一个使用resquegem 处理后台作业的 ruby​​ on rails 应用程序。我让用户触发可能需要 10 分钟以上才能完成的后台作业(他们正在处理大量数据)。作业完成时提醒用户的最佳方式是什么?

我在这里看到了关于 using的答案resque-status,这是唯一的解决方案吗?还是有另一种通过正常方式提醒用户的方法resque(我已经实现了)?

4

2 回答 2

4

如果您打算异步通知用户,您有以下三种选择:

  1. 在数据库中设置一个标志,然后在他们下次登录时更改您的 UI。(例如弹出警报视图或其他内容。)
  2. 在作业运行结束时向他们发送电子邮件。只需为此使用标准的 ActionMailer 东西。
  3. 如果您使用的是 Faye 或 Juggernaut 之类的 pubsub 框架,请向用户推送工作完成的通知。如果他们已登录,他们应该会立即看到。

这些几乎是我唯一能想到的。我个人会选择 1 和 2 的组合;完成后向他们发送电子邮件,并在他们下次登录时通知他们(并在通知中提供链接)。

于 2012-08-02T15:41:34.400 回答
3

您可以使用名为“resque-status”的 gem。

使用此 gem,您可以轻松获取工作状态:

status = Resque::Plugins::Status::Hash.get(job_id)

Resque::Plugins::Status::Hash对象返回:

status.pct_complete #=> 0
status.status #=> 'queued'
status.queued? #=> true
status.working? #=> false
status.time #=> Time object        
status.message #=> "Created at ..."

有关更多详细信息并获取此 gem,请访问:https ://github.com/quirkey/resque-status

于 2012-10-04T06:12:55.557 回答