【问题标题】:How to alert user when a resque job finishes如何在 resque 作业完成时提醒用户
【发布时间】:2012-07-31 14:03:02
【问题描述】:

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

我已经看到关于使用resque-status 的答案here,这是唯一的解决方案吗?还是有其他方法通过普通的resque(我已经实现)提醒用户?

【问题讨论】:

    标签: ruby-on-rails ruby redis resque


    【解决方案1】:

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

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

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

    【讨论】:

    • 我打算考虑在以后向用户发送电子邮件,所以谢谢你!我不确定我怎么没想到数据库中的标志,这很有意义。
    • 3 肯定是最优雅的解决方案,现在正在研究这个
    【解决方案2】:

    您可以使用名为“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 ..."
    

    欲了解更多详情并获取此宝石,请访问:https://github.com/quirkey/resque-status

    【讨论】:

      猜你喜欢
      • 2014-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-30
      相关资源
      最近更新 更多