1

resquegem を使用してバックグラウンド ジョブを処理する Ruby on Rails アプリがあります。ユーザーに、完了までに 10 分以上かかるバックグラウンド ジョブをトリガーさせます (大量のデータを処理しています)。ジョブが完了したときにユーザーに警告する最良の方法は何ですか?

ここでの使用に関する回答を見てきましたresque-statusが、それが唯一の解決策ですか? または、通常の方法でユーザーに警告する別の方法がありresqueますか (既に実装しています)。

4

2 に答える 2

4

ユーザーに非同期で通知する場合は、次の3つのオプションがあります。

  1. データベースにフラグを設定し、次にログインしたときにUIを変更します(アラートビューなどでポップするようなものです)。
  2. ジョブの実行が終了したら、メールを送信します。これには、標準のActionMailerのものを使用してください。
  3. FayeやJuggernautなどのpubsubフレームワークを使用している場合は、ジョブが完了したことをユーザーに通知します。サインインしている場合は、すぐに表示されます。

私が考えることができるのは、これらだけです。私は個人的に1と2の組み合わせで行きます。完了時に電子メールを送信し、次にログインしたときに通知します(通知にリンクを提供します)。

于 2012-08-02T15:41:34.400 に答える
3

You can use a gem called "resque-status".

Using this gem you can easily get a job's status:

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

This Resque::Plugins::Status::Hash object returns:

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

For more details and getting this gem visit: https://github.com/quirkey/resque-status

于 2012-10-04T06:12:55.557 に答える