6

タスクの遅延を設定するオプションを使用してジョブ/メッセージキューを設定する必要があります。これにより、フリーワーカーがすぐに取得するのではなく、一定時間後に取得するようになります(タスクごとに異なる場合があります)。いくつかのLinuxキューソリューション(rabbitmq、gearman、memcacheq)を調べましたが、どれもこの機能をそのまま提供しているようには見えません。

これをどのように達成できるかについてのアイデアはありますか?

ありがとう!

4

2 に答える 2

11

私は BeanstalkD を非常に効果的に使用しました。新しいジョブを挿入する際に遅延オプションを使用して、アイテムが予約可能になるまで数秒待機しました。

長期間の遅延 (たとえば 30 秒以上) を行っている場合、またはジョブを実行するのに多少重要な場合 (ただし後で)、デーモンのクラッシュがジョブの記録を保持できるように、バイナリ ログ システムも備えています。 . そうは言っても、私は Beanstalkd インスタンスを介して何十万ものライブジョブを配置しましたが、私が書いたワーカーは常にサーバーよりも問題がありました。

于 2010-03-03T13:15:04.770 に答える
1

AMQP ブローカー (RabbitMQ など) を使用できます。また、特定のメッセージ (特定のメッセージrouting_key) をインターセプトする交換所にある "エージェント" (たとえば、pyton-amqplib を使用して構築された Python プロセス) があります。タイマーが経過したら、別のrouting_key.

これが「翻訳/マッピング」を意味することは理解しrouting keysていますが、機能します。RabbitMQ と python-amqplib の操作は非常に簡単です。

于 2010-03-02T15:11:02.573 に答える