2011-08-13 15 views
1

App Engineのタスクキューは、明らかに漂遊例外を含む2xxの範囲外のステータスコードを返すと、タスクが再試行されるようにします。これはタイムアウトなどの時折の失敗の場合は問題ありませんが、再試行の回数に関係なくタスクが正常に完了できない恒久的な障害の場合は、不必要な負荷が発生します。もちろん、この場合2xxを返すことができますが、これはGAEによる誤ったリクエストとして登録されず、管理コンソールのダッシュボードの「エラー」表には表示されません。GAEタスクの視覚的かつ永続的な失敗

そこで私が求めている:それはあるような方法でタスクを失敗する方法がある。errornous要求 として管理コンソールに表示

  • (永久的な失敗を)再試行されません
+0

エラーレベルでログすると、戻りコードが何であっても表示されます(私の経験上、結果コードよりもログエラーレベルでフィルタする方がはるかに簡単です)。ああ、それはログです。オーバービューの右下にある悪いページのリストを意味しますか?もしそうなら、申し訳ありませんが、これは役に立たないでしょう。 –

+0

はい、これは管理コンソールのダッシュボードの「エラー」テーブルの意味です。もちろん、 'ERROR'レベルでロギングすれば、ログには目立つようになりますが、ログにのみ表示されます。 – Xion

答えて

1

ここにキャッチ22が少しあります。特定の方法で失敗したタスクを再試行したくない場合。しかし、HTTP応答コード以外に、GAEはどのように知っていますか? "はい、失敗しましたが、それはO.Kです。"またはが利用可能である場合(「501未実装」以外の何かを意味する)、「はい、私は失敗し、私は永遠に」と通信することはできません。あなたが得ることができる最も近いものは、いくつかの失敗シナリオが排除する2xx応答です。

タスクスタックのトレースを調べる機能はありませんが、存在する場合、特定のスタックトレースが失敗条件が永続的であることを意味すると判断することはむしろ困難です。博士論文が含まれている可能性があります。

私はこれがテストと警戒に帰着すると思います。

2

管理コンソールの[エラー]タブにリクエストを表示するために必要な操作は、レベルがERROR以上のメッセージを少なくとも1つログに記録することです。単にメッセージを記録してから、ステータスコードを200に戻して、タスクが再エンキューされないようにしてください。

再試行の回数を指定して再試行を停止する場合は、configure thatにすることができます。

関連する問題