問題タブ [resque]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - WAR としてデプロイされた場合の JRuby のスレッドセーフ Resque ワーカー
現在、JRuby で Resque を使用しており、開発時にワーカーを開始する 2 つの方法を使用しています。
- レーキの使用:
- プログラムで、Sinatra Rack App (または何でも) を介して初期化され、最終的に次のクラスを呼び出します。
これらのソリューションは両方とも、開発中は受け入れられます。たとえば、Tomcat にデプロイした場合にこれがどのように機能するかが心配です。
Ruby では通常、ワーカーを生成またはデーモン化してから、監視ツールを使用して pid を監視します。
デプロイ時にワーカーをプログラムで開始することは理にかなっていますか? javaで新しいスレッドを開始するか、jrubyプロセスを乱雑にするかどうか疑問に思っています.使用しない場合は、クォーツのような別のスケジューリングライブラリを使用してワーカーを開始しますか? またはデプロイタスクで起動するレーキタスク?
Worker モデルを作成して、データベース内のワーカーを追跡することもできますが、それは私には意味がありません。
ヘルプや知識をいただければ幸いです。
ありがとうございました。
参照:
https://github.com/defunkt/resque
http://rubydoc.info/github/defunkt/resque/master/Resque/
http://blog.thomasmango.com/post/636319317/resque-in-production
ruby-on-rails-3 - レスキューワーカーによってキューに入れられたジョブを破棄するにはどうすればよいですか?
Rails-3プロジェクトでResqueを使用して、5分ごとに実行するようにスケジュールされているジョブを処理しています。私は最近、これらのジョブの作成に雪だるま式に何かをしました、そしてスタックは1000以上のジョブにヒットしました。多くのジョブがキューに入れられる原因となった問題を修正しましたが、バグによって作成されたジョブがまだ存在しているため、1000以上のジョブがあるキューにジョブが追加されるため、テストが困難になるという問題があります。私はこれらの仕事を止めることができないようです。flashallコマンドを使用してredis-cliからキューを削除しようとしましたが、機能しませんでした。私は何かが足りないのですか?coz私はこれらの仕事を取り除く方法を見つけることができないようです。
ruby-on-rails - 神は Resque ワーカーを開始しません: rake は中止されました! 非絶対的な家
log/resque-0.log に次のエラーが記録されています。
神が使用するのと同じコマンドを使用してワーカーを手動で起動すると、正常に起動します。
そのコマンドを「rails」ユーザーと「root」ユーザー(Godが実行されているユーザー)で実行しようとしました。何か案は?
ruby - (resque-status) Resque::JobWithStatus に引数を渡すことは可能ですか?
私は resque にかなり慣れていませんが、私のニーズには本当に合っているようです。
実際、私は次のような簡単なテストアプリをセットアップしようとしています:
そして、バックグラウンドワーカーを作成します
resque-status がなければ、完全に機能します (ワーカーを作成する代わりに enqueue を呼び出します)。resque-status を使用すると、
引数の数が間違っています (1 に対して 2) /.../resque_test/lib/word_analyzer.rb:6:in `perform' /.../.rvm/gems/ruby-1.9.2-p136/gems/resque- 1.16.1/lib/resque/job.rb:127:「実行」中
ドキュメントとコードの両方を検索しましたが、resque-status ジョブに引数を渡す適切な方法が見つかりませんでした。出来ますか?
前もって感謝します。
ruby-on-rails - resque-webが500サーバーエラーで起動に失敗する
resqueをインストールするための構成ガイドラインに従っています。(OpenURI :: HTTPError)に遭遇しました。RVM 1.9.2-p180、rails 3.0.6、およびPOWを使用しています。「resque-web」は500サーバーエラーで起動できません。ここで一体何が起こっているのですか?
問題を再現するには:
- $でredisを開始します
redis-server
- でワーカーを開始します
$ VVERBOSE=1 QUEUE=file_serve rake environment resque:work
- 次のコマンドでResque-Webを開始してみてください。
RAILS_ENV=development resque-web config/initializers/resque.rb
config / resque.yml
initializers / resque.rb:
ターミナル:
Redis-server(localhost:6379にアクセスしたときに追加のクライアントを接続しています。
Initializers / redis.rb
ターミナル:($redisの証明)
ruby-on-rails - 2回目の実行でResque.enqueueが失敗する
アプリをRails3.0.3からRails3.1rcに移植しようとしています...構成に関しては、何も見逃していないと思います。このプロセスは、3.1rcではなくRails3.0.Xで完全に機能します。
コンソールでは、次のことを行います。
これまでのところすべてが機能しています。Resque-webは失敗したジョブを報告しません。そして、モジュールEncodeSongから2つの「puts」を取得します。
ただし、Resque.enqueue(EncodeSong、Song.find(20).id、Song.find(20).unencoded_url)を2回実行すると、resque-web(下記)で次のエラーが返されます。エラーを解消するには、実行中のプロセスを閉じる必要があります。QUEUE= * rake environment resque:workそして、コンソールウィンドウで再実行します。しかし、最初にResque.enqueue()を試行した後、問題が再発します。
これが私の関連するコードの残りです:
/config/initializers/resque.rb
/app/jobs/encode_song.rb
lib / tasks / resque.rake
よくわかりませんが、この問題に関連している可能性があります。私の推測では、master resqueプロセスは、rails appクラス、モデルなどをロードしている間にdbへの接続を確立し、その接続はfork()edプロセス(終了時?)で破損します。
任意のヘルプ/方向性をいただければ幸いです。
編集:
lib / tasks / resque.rakeから次のブロックを削除した場合:
そしてコンソールで、Resque.enqueue(EncodeSong、Song.find(20).id、Song.find(20).unencoded_url)を実行します
新しいエラーが発生します(QUEUE = * rake environment resque:workが実行されたコンソールで):
どうやら、これはアダプタのバグかもしれませんか?ここで間違っている可能性があります。あなたの考え?
ruby-on-rails - 確認メールはバックグラウンドで処理する必要がありますか?
確認メールは、ある種のバックグラウンドジョブ(Resque、Delayed_Jobなど)を使用してバックグラウンドで処理/送信する必要がありますか?
アプリは、確認メールが送信されるまでハングする傾向があります。ただし、ハングするのはほんの一瞬か2秒です。バックグラウンドタスクとして送信する価値があるかどうかはわかりません。
あなたの考えは何ですか?
ruby - Rails キュー管理
リモート Web サイトから情報を取得して再検証するジョブを作成しています。私は実際に、次のように機能するキューを使用して既に実装しています。テキスト ファイルが読み取られ、5k 単位でスライスされ、スレッド プロセッサに渡されます。スレッド プロセッサは終了し、新しいワーカーが生成されます。
私はresqueを調べていますが、このような問題について一般的な種類の設計上の質問がありました. では、5 ~ 2,000 万単位の作業になる可能性があるジョブがある場合、キューを格納するためのベスト プラクティスは何ですか? たとえば、理論的には作業を分割して保存し、そのチャンクのジョブを作成したり、キューに 5 ~ 2,000 万の個別の項目を入れることができます。フェッチ/再生成される作業には多くのオーバーヘッドがあるようです。ただし、作業をチャンク化しようとすると、かなりのオーバーヘッドが発生し、コーディングが増えます。