Google App Engine タスク プッシュ キューを使用して、スケジュールされた時間の秒単位の精度で実行したい将来のタスクをスケジュールしています。
通常、私は今から 30 秒後にシステムの状態の変更をトリガーするタスクをスケジュールし、最後に別の将来のタスクをスケジュールします。
私のローカル開発サーバーではすべて正常に動作します。
しかし、GAE サーバーにデプロイしたので、スケジュールされたタスクの実行が遅れていることに気付きました。スケジュールされてから 2 分後でも実行されているのを見てきました。
タスク キュー管理コンソールから、実際には ETA について次のように表示されます。
ETA: "2013/11/02 22:25:14 0:01:38 ago"
Creation Time: "2013/11/02 22:24:44 0:02:08 ago"
これはなぜでしょうか?
ETA によってスケジュールされたタスクの期待値と精度に関するドキュメントは見つかりませんでした。
私は Python でプログラミングしていますが、これが違いを生むとは思えません。\
Python コードでは、eta パラメータは次のように文書化されています。
eta: A datetime.datetime specifying the absolute time at which the task
should be executed. Must not be specified if 'countdown' is specified.
This may be timezone-aware or timezone-naive. If None, defaults to now.
マイキュー設定:
queue:
- name: mgmt
rate: 30/s
30 秒ごとに実行する必要がある 5 つのタスクを除いて、システムにはまったく負荷がかかりません。
アップデート:
https://code.google.com/p/googleappengine/issues/detail?id=4901を見つけました。これは、タイムリー キューの受け入れられた機能リクエストですが、それについて何も行われていないようです。ETA を使用したタスクは、何分も遅れて実行される可能性があるという事実を受け入れます。
秒精度でトリガーをスケジュールするには、他にどのようなメカニズムを使用できますか?