質問

Restfulインターフェースと通信したいアプリエンジンアプリケーションのインスタンスが2つ実行されています。1つのデータが更新されると、2番目のWebフックを呼び出して、独自のシステムのデータの新しいコピーを取得します。 'site1'の中に私は持っています: ジェネラコディセタグプレ

「site2」のdata_updatedのハンドラー内にあります: ジェネラコディセタグプレ

2つのサイト間で渡されるデータはほとんどありませんが、次のエラーが発生します。期限を10秒に増やしてみましたが、それでも機能しません。 ジェネラコディセタグプレ

誰かが何が起こっているのかについての洞察を提供できますか?

ありがとう-リチャード

役に立ちましたか?

解決 2

メソッドの変更 から ジェネラコディセタグプレ

から ジェネラコディセタグプレ

締め切りエラーを修正しました。

urlfetchのドキュメントから:

締め切り からの応答を待つ最大時間 リモートホスト、秒数として。リモートホストがそうでない場合 この時間内に応答すると、DownloadErrorが発生します。

リクエストの待機に費やされた時間は、CPUクォータにカウントされません リクエストに対して。リクエストタイマーにカウントされます。アプリの場合 URLフェッチ呼び出しが戻る前に要求タイマーが期限切れになると、呼び出しは キャンセルされました。

リクエストハンドラの期限は最大60秒です。 タスクキューとcronジョブハンドラーの場合は10分。締め切りが なし、締め切りは5秒に設定されています。

他のヒント

App Engineのurlfetchは、常に期待どおりに動作するとは限りません。URLを取得するのに約10秒かかります。フェッチしようとしているURLが稼働していると仮定すると、DeadlineExceededErrorを呼び出し、from google.appengine.runtime import apiproxy_errorsを使用してtry / exceptブロック内でurlfetch呼び出しをラップすることでexcept apiproxy_errors.DeadlineExceededError:をキャッチできるはずです。

関連する回答こちら。

curlまたはその他の方法でURL(www.site2.com/data_updatedおよびwww.site1.com/get_new_data)を手動でクエリして、制限時間内に応答していることを確認しましたか?転送する必要のあるデータの量が少ない場合でも、ハンドラーに問題があり、結果の返送が遅れている可能性があります。

転送されるデータの量はここでは問題ではなく、待ち時間は問題です。

話しているアプリの応答に10秒以上かかることが多い場合は、別のクラウドプラットフォーム(EC2など)で「プロキシコールバック」サーバーを使用する必要があります。しばらく待つことができる場合は、新しいバックエンドインスタンスは、urlfetchの時間制限をいくらか緩和することになっています。

平均応答時間が10秒未満で、失敗しているのが比較的少ない場合は、数回再試行してください。私はあなたのために呼び出しがべき等であることを願っています(つまり、再試行が悪影響を及ぼさないように)。そうでない場合は、独自のレイヤーを上にロールバックできる可能性があります。少し面倒ですが、問題なく機能します。これが私たちの仕事です。

J

GAEのドキュメントには、期限は60秒になる可能性があると記載されています: ジェネラコディセタグプレ

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top