問題タブ [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.
ruby-on-rails-3 - Heroku で Resque が正しく実行されない
バックグラウンド ジョブに Resque + RedisToGo を使用しています。Heroku でバックグラウンド タスクを実行できません。初めてバックグラウンド ジョブを実行すると、問題なく実行されるため、これは奇妙です。しかし、もう一度実行すると、実行されません。バックグラウンドを正常に完了するには、毎回「heroku restart」を実行する必要があります....
例えば。Resque バックグラウンド アクションに次のコードがあるとします。
「heroku コンソール」では、次のことを行います。
上記のコードを初めて実行すると、「heroku ログ」に 4 つの「プット」が表示されます。しかし、もう一度実行すると、「foobar」のみが返されます。他の「プット」は表示されません.....
2回目は「media = Media.find(media_id)」を実行できないのではないかと思います。これは、Heroku の本番サーバーでのみ発生しています。私たちのローカル開発マシンでは、この問題は発生しません....何が問題なのか知っている人はいますか?
PS。Heroku ログを有効にしようとしましたが、有用な応答が得られません。このチュートリアルに従って、Resque で Heroku をセットアップしました
ruby-on-rails-3 - rake タスク内で redis と resque スケジューラを起動しようとしています
rake タスクから redis と redis-scheduler を開始したいので、次のようにしています。
問題は、redis がフォアグラウンドで起動し、スケジューラが開始されないことです。バックグラウンドで起動しない場合 (& を使用)。スケジューラーは、redis が起動して実行された後に開始する必要があります。
ruby-on-rails-3 - resque-scheduler とオーバーラップする cron
resque-schedule を起動して実行しているところですが、1 つのスケジュール タスクで問題なく動作します。ただし、同じ cron スケジュールに 1 秒追加すると、それ自体が踏みにじられているように見えます。私の resque_schedule.yml は次のようになります。
rake resque:scheduler で実行すると、定期的にエラーが発生します:
どちらか一方だけにスケジュールを変更すると、うまく再生されます。重複しないように cron スケジュールを変更すると、正常に実行されます。助けてくれてありがとう。OSx 10.6.6、ルビー 1.9.2p136。
両方のクラスの perform メソッドには、現在デバッグ用の put しかないことに注意してください。
ruby-on-rails - Resque では、JSON シリアライズ可能でないオブジェクトがデータベースにない場合、ジョブにどのように渡すことができますか?
あるジョブで IMAP オブジェクトを作成していて、それを Resque の他のジョブに渡す必要があります。シリアル化できないため、IMAP オブジェクトを渡す最良の方法は何ですか?
ruby - resqueスケジューラで動的ジョブをスケジュールする
Rails 3とresqueスケジューラーを使用して、将来スケジューリングジョブをテストしようとしています:
以下は私が使用しているコードですが、NoMethodError set_schedule を取得しています。
簡単なエンキューを使用してみましたがResque.enqueue(Notify, params[:message])
、これは正常に機能します。
アップデート:
以下は私が得ているエラーです:
ruby - Rails 3アプリでタスクをスケジュールする
各ユーザーのカスタム スケジュールで小さなタスクを実行する必要がある Rails 3 アプリケーションを作成しています。スケジュールされたタスクは動的に定義されます。現在、私の計画は、redis で resque スケジューラを使用することです。
特定のタスクのスケジュールを設定したら (たとえば、タスク A を 48 時間ごとに実行するなど)、そのタスクを無期限に実行したいと考えています。したがって、これらのスケジュールをデータベースなどに保存したいので、再起動時にアプリがクラッシュした場合に備えて、それらのタスクを再度キューにロードします。
これは Resque が redis に保存することでデフォルトでサポートするものですか、それとも独自のカスタムのものを作成する必要がありますか? ruby-taskr (http://code.google.com/p/ruby-taskr/) も調べていました。taskr がデータベースへの保存と起動時の登録をサポートしているかどうかわかりません。
また、私が見ることができるアプリケーション/デモがあれば助かります。
ありがとう
ruby - 神が古いResqueワーカープロセスを離れることを防ぐ方法は?
私は、神を介してresqueウォッチを停止しても、古いワーカープロセスが残らないように、resqueワーカーのtravis -ciを神と一緒に監視する方法を理解しようとしています。
以下では、フォークされたジョブの子プロセスではなく、ワーカープロセスについて説明します(つまり、キューは常に空です)。
次のように手動でresqueワーカーを起動すると、次のようになります。
私は単一のプロセスを取得します:
そして、このプロセスは、ワーカータスクを停止するとすぐになくなります。
しかし、私が神で同じことを始めるとき(正確な構成はここにあります、基本的にresque / godの例と同じものです)このように...
次に、追加のプロセスを取得します。
神は最初のもののpidを記録するだけのようです:
それから私が神を介してresqueウォッチを停止すると:
神はこのログ出力を与えます:
ただし、実際には両方のプロセスを終了せず、実際のワーカープロセスを存続させます。
mysql - フォーク/スレッド化されたアプリケーション内で実行している場合、ActiveRecord は再接続できませんか?
ここでは自由回答形式の質問が少しあるので、最初に問題の概要を説明します。データ同期ジョブをキューからポップすることになっているResqueワーカーがいます。その理由は 2 つあります。Cron を使用する (そして Rails 環境の起動時間を何度も支払う) のが悪いことと、Github がうまく作成した代替キューです。彼らが Resque を発表したとき、彼らに対するかなり良いケースです。また、Redis の時系列機能は既にインフラストラクチャの大きな部分を占めており、TS データを RRDTool などにシャッフルしています...
ここに問題があります。典型的なジョブ間の間隔は 3 時間です (ただし、スタッフはいつでもジョブをスケジュールできます。そのため、キューが発生します)、PostgreSQL サーバーがなくなります。簡単に治すことができreconnect: true
、対応する環境下での設定により、これが期待どおりに機能することが保証されると期待していました...を使用するアプリケーションでは機能しない場所をいくつか 読みました. 当然のことながら、Resqueはワーカーを起動します...私が理解できない部分は、なぜ ActiveRecord の再接続がこれらの状況下で機能しないのかということです。reconnect: true
fork()
reconnect!
ActiveRecord でのMySQL アダプターとPostgreSQL アダプターの実装が異なることに気付きましたが、いずれにしても ActiveRecord のreconnect: true
構成は機能すると思います。
問題は十分に明確なようです。子プロセスが存在する場合、親によって作成されたファイルハンドルが閉じられます(したがって、データベースへの接続が切断されます)-ActiveRecordがそうしないような方法でファイルハンドルを閉じることは可能ですか接続が終了したことを認識しますか?
また、価値のあるものとして、Github で見つけたActiveRecord 対応の fork()もパスティとしてあります - テストしていませんが、動作すると思います (現在の Rails では試していません..)
私の質問はさらに、AR の自動再接続が機能しないのはなぜfork()
ですか? (そして最近では、この問題を抱えているのは私だけではありません。Resque で PGSQL を使用しているせいだと思います!)
ruby-on-rails - resque の問題: 処理が終了したときにジョブがキューから削除されない
Rails アプリケーションで resque と resque-scheduler を使用しています。resque-scheduler を使用する際に奇妙な問題に直面しています。「実行」メソッドで終了すると、ジョブの 1 つがキューから削除されません。キューから抜け出すには、明示的に強制終了する必要があります。その後、キュー内の他のジョブが実行を開始します。
Job クラスは次のように単純です。
resque_schedule.yml には以下が含まれます。
gem のバージョンに問題がある可能性はありますか? または他の?
redis - Resque を使用して、異なるサーバー上の複数の redis データベースにジョブをキューに入れることはできますか?
たとえば、同じ Rails アプリから、「localhost:6379」にある 1 つの redis データベースに電子メールをキューに入れ、「10.0.0.5:6379」にある別の redis データベースにインポートできるようにしたいと考えています。
これにより、redis接続アプリが広く設定されているようです。Resque.redis = "localhost:6379"
Resque で複数の redis 接続をインスタンス化して使用する方法はありますか?