1

2 つの異なるキューを持つ resque および resque-scheduler ワーカーが
あり、同じタスクを実行し、特定の Web サイトのリンクを取得してそのリンクを保存します。
resque-scheduler と resque worker が並行して動作し、同じタスク (同じ Web サイトのリンクを取得する) を実行するとどうなりますか?
このような状況をどのように処理できますか?

4

1 に答える 1

1

セットアップを明確にしていないか、大きな問題がいくつかあります。Resque と Resque-scheduler は一緒に実行することを意図していました。Resue-scheduler は、将来のタスクをスケジュールすることのみを想定しています。そのようなタスクは引き続き Resque ワーカーによって実行されます。github のホームページでこのセクションをお読みください: https://github.com/resque/resque-scheduler#delayed-jobs . それらを引用すると、

これにより、ジョブが保存されます ... resque 遅延キューに保存されます。この時点で、スケジューラ プロセスはジョブを遅延キューからプルし、指定されたジョブの適切な作業キューに入れます。ワーカーが利用可能になるとすぐに処理されます。 (他の resque ジョブと同じように)。

では、どうぞ。resque ワーカーとスケジューラを永遠に一緒に実行し続けます。質問の他の部分に答えるために、スケジューラを介していくつかのタスクをスケジュールし、同じタスクが resque が直接取得するためにキューに入れられている場合、最終的な結果はタスク実行ロジックに依存します。「Web サイトから何かを取得する」ことは、2 回行っても無害に思えます。しかし、トランザクション テーブルを更新して、フェッチの結果に基づいてベンダーに支払いを行うと、深刻な問題が発生します。

于 2013-11-19T10:12:45.773 に答える