AppEngineから外部APIと通信するときのApplicationError2とApplicationError5

私は別のサービスAPIに接続するためにPython27でGoogle App Engineにアプリケーションを構築しましたが、一般的にはすべてがスムーズに動作します。たびに次の2つのエラーのいずれかが発生します

(, error('An error occured while connecting to the server: ApplicationError: 2 ',), <traceback object at 0x11949c10>)

(, HTTPException('ApplicationError: 5 ',), <traceback object at 0x113a5850>)

これらのエラーの最初のもの(ApplicationError:2)は、私が通信しているサーバーの部分で発生しているエラーと解釈されますが、これについての詳細は見つかりませんでした。責任を負う/それを修正することができます。

これらのエラーの2番目のエラー(ApplicationError:5)について詳しく説明しましたが、サーバーがアプリケーションと通信するには時間がかかりすぎたと考えられますが、タイムアウトを20秒に設定しています。

誰かがエラーにリンクや洞察力を提供することができれば、具体的に何が原因でエラーが発生するのか、それを修正するために何ができるのでしょうか、非常に感謝しています。

1
接続のもう一方の端で接続が切断された可能性があります。
追加された 著者 max,
この問題を再現するためにいくつかのコードとパブリックURLを共有できますか?
追加された 著者 proppy,
コールはかなりの量の公開不可能なコードに埋め込まれており、それは "クリーン"の仕事になるでしょう。私は本当になぜこれが起こっているのかといういくつかのアイデアの後にありました - エラーの一般的な原因とエラーを克服するための簡単な勝利があるかどうかを確認することでした。
追加された 著者 user714852,
タイムアウトを120秒に増やしても、私はまだこの問題を抱えています...
追加された 著者 user714852,

1 答え

あなたはカジュアルな会話や呪いの中で "冪等分"という言葉を使い始めます:)

あなたが行うことができる唯一のことは、呼び出しを再度試み、最初の呼び出しが終了した可能性があるという事実を受け入れ、応答がタイムアウトするようにすることです。つまり、呼び出しが実際に何かをした場合(たとえば顧客注文を作成する)タイムアウトエラーの後に、最初の要求が成功したかどうかをチェックして、同じオーダーの複数のコピーが終了しないようにする必要があります。

希望は意味をなさない。私たちはいくつかの非友好的なAPIを使って作業しています。私たちにとって、私たちのコードの約80%はまさにこの種の@ @ $%を扱っています。

1
追加された
これは良い考えではありません。呼び出しが成功した可能性があります。呼び出しがオブジェクトなどのフォルダを作成する場合は、現在存在しています。 2回目の呼び出しで2番目のフォルダが作成されます。これは望ましくない可能性が高いです。
追加された 著者 Jan Z,
私の現在の戦略は、呼び出しを再度試みることです。これは問題の一部です。コールが成功するか失敗するかを判断するルールやメカニズムはないようです。
追加された 著者 user714852,
良い点は、前の通話が最初に成功したかどうかを確認することです。
追加された 著者 user714852,