問題タブ [resque-retry]
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 - Resque-retry で指数バックオフをリセットする
指数関数的バックオフで失敗した後に遅延する必要がある resque タスクがあります。ただし、指数バックオフをリセットする必要がある場合もあります。ジョブが最終的な目標に向かって進行している場合は、遅延を非常に短くリセットする必要があります。したがって、ジョブは実行され、失敗した場合、2 つの異なる失敗モードがあります。1 つの失敗モードでは、すぐにジョブを再試行する必要がありますが、その後バックオフを開始します。他の失敗モードでは、ジョブは前回の試行前の遅延よりも長く (たとえば 2 倍) 遅延する必要があります。
これretry_criteria_check
ができるはずのようですが、 と統合する方法がわかりませんResque::Plugins::ExponentialBackoff
。誰かがより良い方法を提案できない限り、さまざまな例外をスローすることでさまざまな障害モードを伝えると思います。
ruby-on-rails - ジョブが失敗するたびにresque-cleanerメソッドを自動的に呼び出す方法は?
https://github.com/ono/resque-cleaner
このドキュメントでは、コンソールでメソッドを使用する方法について説明します。メソッドを呼び出して、失敗したらすぐに特定のジョブを再キューイングしたい場合はどうなりますか。
ruby-on-rails - resque.performメソッドに期待値を設定します。タスクはコールバックにエンキューされます
だから私の理解に基づいて、あなたがするとき私は信じています
Resque.inline = Rails.env.test?
resqueタスクは同期的に実行されます。コールバック中にエンキューを取得するresqueタスクのテストを書いていafter_commit
ます。
after_commit :enqueue_several_jobs
.perform
Resqueタスククラスの方法では、私はを実行Rails.logger.info
しています。テストでは、次のようなことを実行しています。
そして、私はとについて同じテストをPingTwitter
していPingPinterest
ます。
すべてのresqueジョブが実行される前にテストが実際に終了したように見えるため、2番目と3番目の期待値で失敗します。最初のテストだけが実際に合格します。次に、RSpecは、他の2つのテストでは受信しMockExpectationError
なかっRails.logger
たという通知をスローします。.info
誰もがこれを以前に経験したことがありますか?
編集
誰かがそのshould_receive
ように振る舞い、代わりmock
に私がすべきだと述べ.exactly(n).times
ました。以前にこれを明確にしなかったことをお詫びしますが、私はさまざまなブロックで私の期待を持っており、1つのブロックで次のブロックのためにそれを模倣するとit
は思わないのですか?私がこれについて間違っているかどうか私に知らせてください。should_receive
it
it
ruby-on-rails - Resque再試行は遅滞なく再試行します
これは私が持っているコードです
このタスクをローカルでエンキューするたびに、Resqueがバックオフ戦略を尊重せずにタスクをすぐに再試行するように見えるという問題が発生しています。誰かが以前にこの問題を経験したことがありますか?
resque - ジョブを Resque に再キューイングするには?
私は Resque を初めて使用し、過去 2 か月間実稼働環境で使用しています。例外が発生した場合にジョブをキューに再キューイングするという問題が発生しています。私のジョブは約 50 の外部 HTTP 呼び出しを行い、一部の呼び出しは待ち時間が原因で失敗し、サービスがダウンすることもあります。https://github.com/lantins/resque-retryを調査していますが、 resque-retry がジョブを再試行するか再キューイングするかを理解しようとしています。失敗したジョブが他のジョブよりも優先されることを望んでいませんこのキューにジョブがある場合は、もう一度キューに追加してください。また、すべての HTTP 呼び出しにはレスキュー ブロックがありますが、resque-retry を使用している間は、このクラス (Resque perform から呼び出される) に変更を加えて、再試行/再キューイングされるようにする必要があります。
ruby - 失敗するのではなくポップする
ruby-resque の簡単なコードがあります。
ただし、コードの問題により、一部のジョブが失敗します。
問題は、それらが失敗したジョブに表示されず、消えてしまうことです (ジョブがキューから取り出されると、ポップされて削除されます)。
ジョブを失敗した位置に置くために resque を作成するにはどうすればよいですか?
ruby - resque-retry-'再試行試行'は'n/a'として表示されます
resque-retryを使用してジョブを再試行しています。resque-webインターフェースの「retry」タブに再試行する必要のあるジョブが表示されます。ただし、「再試行の試行」情報は常に「n/a」です。これには理由がありますか?前もって感謝します!
heroku - Heroku で Resque::TermException または SIGTERM からクリーンに回復する
再起動またはデプロイすると、失敗したキューに または のいずれかで多数の Resque ジョブが取得されResque::TermException (SIGTERM)
ますResque::DirtyExit
。
TERM_CHILD=1 RESQUE_TERM_TIMEOUT=10
Procfileで new を使用しているため、worker 行は次のようになります。
resque-retry
これら2つの例外で自動再試行されると思われるものも使用していますか? しかし、そうではないようです。
だから私は2つの質問を推測します:
- 各ジョブで手動でレスキューし
Resque::TermException
、これを使用してジョブを再スケジュールできます。しかし、すべてのジョブに対してこれを行うクリーンな方法はありますか? モンキーパッチも。 - これらを resque-retry 自動再試行すべきではありませんか? そうでない理由が何か思いつきますか?
ありがとう!
編集:すべてのジョブを 10 秒以内に完了させることは、規模的には不合理に思えます。Resque::DirtyExit 例外が実行されたときに、これらのジョブを自動的に再キューイングする方法が必要なようです。
android - UIL android での再試行の停止
私はnostra Android-Universal-Image-Loader
自分のアプリケーションで使用しています。
サーバーにその URL の画像がない場合、再試行の回数が多すぎます。
再試行を停止するにはどうすればよいですか?