タスクの遅延を設定するオプションを使用してジョブ/メッセージキューを設定する必要があります。これにより、フリーワーカーがすぐに取得するのではなく、一定時間後に取得するようになります(タスクごとに異なる場合があります)。いくつかのLinuxキューソリューション(rabbitmq、gearman、memcacheq)を調べましたが、どれもこの機能をそのまま提供しているようには見えません。
これをどのように達成できるかについてのアイデアはありますか?
ありがとう!
タスクの遅延を設定するオプションを使用してジョブ/メッセージキューを設定する必要があります。これにより、フリーワーカーがすぐに取得するのではなく、一定時間後に取得するようになります(タスクごとに異なる場合があります)。いくつかのLinuxキューソリューション(rabbitmq、gearman、memcacheq)を調べましたが、どれもこの機能をそのまま提供しているようには見えません。
これをどのように達成できるかについてのアイデアはありますか?
ありがとう!
私は BeanstalkD を非常に効果的に使用しました。新しいジョブを挿入する際に遅延オプションを使用して、アイテムが予約可能になるまで数秒待機しました。
長期間の遅延 (たとえば 30 秒以上) を行っている場合、またはジョブを実行するのに多少重要な場合 (ただし後で)、デーモンのクラッシュがジョブの記録を保持できるように、バイナリ ログ システムも備えています。 . そうは言っても、私は Beanstalkd インスタンスを介して何十万ものライブジョブを配置しましたが、私が書いたワーカーは常にサーバーよりも問題がありました。
AMQP ブローカー (RabbitMQ など) を使用できます。また、特定のメッセージ (特定のメッセージrouting_key
) をインターセプトする交換所にある "エージェント" (たとえば、pyton-amqplib を使用して構築された Python プロセス) があります。タイマーが経過したら、別のrouting_key
.
これが「翻訳/マッピング」を意味することは理解しrouting keys
ていますが、機能します。RabbitMQ と python-amqplib の操作は非常に簡単です。