2つのAppEngine(Java)アプリケーションがあります。そのうちの1人はURLFetchを使用して他の人に予定を作成します。受信者には、チャンネルAPIを使用して開いているチャンネルがあるかどうかを確認し、新しいデータについて知らせる機能が追加されました。SocketTimeoutExceptionチャネルメッセージを送信するサービスへのURLFetchを使用
URLFetch呼び出しがSocketTimeoutExceptionで失敗しています。受信者のすべてのコードが実行されます(すべての開いているチャネルに通知されます)が、呼び出し元のアプリケーションはまだSocketTimeoutExceptionを取得します。私がチャネル通知行をコメントアウトするとき、エラーはありません。
これは、デプロイされたアプリケーションでのみ発生し、devモードでは発生しません。また、URLFetchで許可されている60秒(またはさらには10秒)のタイムアウトに近づくこともありません。
コードとスタックトレースが表示されないと助けてくれません。 –
私はサンプルをまとめましたが、私たちはそれを回避しました。チャネルに直接通知するのではなく、要求をタスクキューに送信します。このキューは同じことをしますが、SocketTimeoutExceptionを返しません。いずれにしても、元のものは標準的なサーブレットで、最後にChannelServiceFactory.getChannelService().sendMessageを呼び出すだけでした。 –
アプリに固有のものでなければなりません。あるアプリから別のアプリにURLをフェッチすることは不可能ではありません。 –