1

一般的なタスクキュー(Google GAE TaskQueue、Celeryなど)にはETA/Countdown機能があり、xxx秒後にタスクをキューに入れることができます。ETA/CountdownでTaskQueueを実装する

私はETA機能を備えたタスクキューを必要とするプロジェクトに取り組んでいます。しかし、私はGoogleのPubsubメッセージングシステムを使用する必要がいくつかの制限があります。 PubsubにはETA機能はありません。私はどのようにタスクキューのための信頼性の高いスケーラブルなETAのメカニズムを実装するのだろうかと思います。一般的なアーキテクチャのアイデアと実際のコードサンプルの両方を歓迎します。

システムは600-2000タスク/秒のエンキューを行い、その約10%がETAを取得する必要があります。これは分散システムであり、パフォーマンスに重大です。

セロリのソースcodeをトレースしようとしましたが、ETAを処理する実際のロジックが見つかりませんでした。誰かがETAを扱うセロリのファイル/コードを指し示すことができれば、それはまた良いでしょう。

答えて

0

セロリがどのようにしたのか分かりました。 eventlet.pyでは、イベントレットのspawn_after機能を使用してワーカーの作成を「ETA」秒遅らせます。

secs = max(eta - monotonic(), 0) g = self._spawn_after(secs, entry)

関連する問題