1

現在実行中のタスクがあるかどうかを確認するためにキューの QueueStatistics をチェックする一部のコードで、非常に奇妙な動作が見られます。私の知る限り、実行中のタスクはなく、過去 12 時間以上キューに入れられたタスクはありません。開発コンソールはこれを裏付けており、キューに 0 個のタスクがあることを示しています。

ただし、デバッガーで QueueStatistics 情報を見ると、キュー内に 500 以上 (!!!) のタスクが表示されているため、プロセスが終了していることを確認できます。また、過去 1 分間に 1000 を超えるタスクを実行したにもかかわらず、過去 1 時間に実行したタスクは 0 であるとも表示されます。ETA Usec を解析すると、QueueStatistics がプルされた時点から 1 分以内に ETA があるかのように、時間が「正確に」表示されます。

これは、サーブレットを再実行するたびに繰り返し発生します。サーブレットが最初に行うことは、キューの統計をチェックすることです。これは私のローカル開発サーバーであるため、他のサーブレット、タスク、または cron ジョブは実行されていません。それでも、キューの統計は、何百ものタスクが実行されていることを主張し続けています。

この動作に関する他のレポートは見つかりませんでしたが、Queue Statistics に関して、ここで大きな何かが欠けているように感じます。私が使用しているコードは非常に単純です。

Queue taskQueue = QueueFactory.getQueue("myQueue");
QueueStatistics stats = taskQueue.fetchStatistics();
if (stats.getNumTasks() > 0) { return; }

私は何が欠けていますか?キュー統計は、ローカル開発サーバーではまったく信頼できませんか?

4

1 に答える 1

0

展開時に期待どおりに機能する場合は、それが標準です。

デプロイされた環境では多くのことが機能しません (並列スレッドは並列ではありません。執筆時点では、それらに対処するためのバックエンド サポートは多少壊れています)。デプロイ デプロイ デプロイ!

もう 1 つの例は、チャネル API です。ローカルで使用すると、ポーリングが使用されます。ログ/ブラウザのデバッグを見ると、数百個が表示されます。しかし、展開するとすべてがうまくいき、期待どおりに機能します。

于 2013-01-04T20:05:40.053 に答える