問題タブ [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.

0 投票する
1 に答える
831 参照

ruby-on-rails - Resque-retry で指数バックオフをリセットする

指数関数的バックオフで失敗した後に遅延する必要がある resque タスクがあります。ただし、指数バックオフをリセットする必要がある場合もあります。ジョブが最終的な目標に向かって進行している場合は、遅延を非常に短くリセットする必要があります。したがって、ジョブは実行され、失敗した場合、2 つの異なる失敗モードがあります。1 つの失敗モードでは、すぐにジョブを再試行する必要がありますが、その後バックオフを開始します。他の失敗モードでは、ジョブは前回の試行前の遅延よりも長く (たとえば 2 倍) 遅延する必要があります。

これretry_criteria_checkができるはずのようですが、 と統合する方法がわかりませんResque::Plugins::ExponentialBackoff。誰かがより良い方法を提案できない限り、さまざまな例外をスローすることでさまざまな障害モードを伝えると思います。

0 投票する
1 に答える
268 参照

ruby-on-rails - ジョブが失敗するたびにresque-cleanerメソッドを自動的に呼び出す方法は?

https://github.com/ono/resque-cleaner

このドキュメントでは、コンソールでメソッドを使用する方法について説明します。メソッドを呼び出して、失敗したらすぐに特定のジョブを再キューイングしたい場合はどうなりますか。

0 投票する
2 に答える
938 参照

ruby-on-rails - resque.performメソッドに期待値を設定します。タスクはコールバックにエンキューされます

だから私の理解に基づいて、あなたがするとき私は信じています

Resque.inline = Rails.env.test?

resqueタスクは同期的に実行されます。コールバック中にエンキューを取得するresqueタスクのテストを書いていafter_commitます。

after_commit :enqueue_several_jobs

.performResqueタスククラスの方法では、私はを実行Rails.logger.infoしています。テストでは、次のようなことを実行しています。

そして、私はとについて同じテストをPingTwitterしていPingPinterestます。

すべてのresqueジョブが実行される前にテストが実際に終了したように見えるため、2番目と3番目の期待値で失敗します。最初のテストだけが実際に合格します。次に、RSpecは、他の2つのテストでは受信しMockExpectationErrorなかっRails.loggerたという通知をスローします。.info誰もがこれを以前に経験したことがありますか?

編集

誰かがそのshould_receiveように振る舞い、代わりmockに私がすべきだと述べ.exactly(n).timesました。以前にこれを明確にしなかったことをお詫びしますが、私はさまざまなブロックで私の期待を持っており、1つのブロックで次のブロックのためにそれを模倣するとitは思わないのですか?私がこれについて間違っているかどうか私に知らせてください。should_receiveitit

0 投票する
2 に答える
487 参照

ruby-on-rails - Resque再試行は遅滞なく再試行します

これは私が持っているコードです

このタスクをローカルでエンキューするたびに、Resqueがバックオフ戦略を尊重せずにタスクをすぐに再試行するように見えるという問題が発生しています。誰かが以前にこの問題を経験したことがありますか?

0 投票する
1 に答える
923 参照

resque - ジョブを Resque に再キューイングするには?

私は Resque を初めて使用し、過去 2 か月間実稼働環境で使用しています。例外が発生した場合にジョブをキューに再キューイングするという問題が発生しています。私のジョブは約 50 の外部 HTTP 呼び出しを行い、一部の呼び出しは待ち時間が原因で失敗し、サービスがダウンすることもあります。https://github.com/lantins/resque-retryを調査していますが、 resque-retry がジョブを再試行するか再キューイングするかを理解しようとしています。失敗したジョブが他のジョブよりも優先されることを望んでいませんこのキューにジョブがある場合は、もう一度キューに追加してください。また、すべての HTTP 呼び出しにはレスキュー ブロックがありますが、resque-retry を使用している間は、このクラス (Resque perform から呼び出される) に変更を加えて、再試行/再キューイングされるようにする必要があります。

0 投票する
1 に答える
100 参照

ruby - 失敗するのではなくポップする

ruby-resque の簡単なコードがあります。

ただし、コードの問題により、一部のジョブが失敗します。

問題は、それらが失敗したジョブに表示されず、消えてしまうことです (ジョブがキューから取り出されると、ポップされて削除されます)。

ジョブを失敗した位置に置くために resque を作成するにはどうすればよいですか?

0 投票する
0 に答える
102 参照

ruby - resque-retry-'再試行試行'は'n/a'として表示されます

resque-retryを使用してジョブを再試行しています。resque-webインターフェースの「retry」タブに再試行する必要のあるジョブが表示されます。ただし、「再試行の試行」情報は常に「n/a」です。これには理由がありますか?前もって感謝します!

0 投票する
4 に答える
6186 参照

heroku - Heroku で Resque::TermException または SIGTERM からクリーンに回復する

再起動またはデプロイすると、失敗したキューに または のいずれかで多数の Resque ジョブが取得されResque::TermException (SIGTERM)ますResque::DirtyExit

TERM_CHILD=1 RESQUE_TERM_TIMEOUT=10Procfileで new を使用しているため、worker 行は次のようになります。

resque-retryこれら2つの例外で自動再試行されると思われるものも使用していますか? しかし、そうではないようです。

だから私は2つの質問を推測します:

  1. 各ジョブで手動でレスキューしResque::TermException、これを使用してジョブを再スケジュールできます。しかし、すべてのジョブに対してこれを行うクリーンな方法はありますか? モンキーパッチも。
  2. これらを resque-retry 自動再試行すべきではありませんか? そうでない理由が何か思いつきますか?

ありがとう!

編集:すべてのジョブを 10 秒以内に完了させることは、規模的には不合理に思えます。Resque::DirtyExit 例外が実行されたときに、これらのジョブを自動的に再キューイングする方法が必要なようです。

0 投票する
0 に答える
246 参照

android - UIL android での再試行の停止

私はnostra Android-Universal-Image-Loader自分のアプリケーションで使用しています。

サーバーにその URL の画像がない場合、再試行の回数が多すぎます。

再試行を停止するにはどうすればよいですか?