0

私のアプリケーションはGAEで動作しています。このアプリケーションは、RESTをCloudMLに呼び出します。ここでREST経由でCloudML Predictを呼び出す際に内部エラーが発生しました

はその

 GoogleCredential credential = GoogleCredential.getApplicationDefault() 
       .createScoped(Collections.singleton(CLOUDML_SCOPE)); 
     HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); 
     HttpRequestInitializer requestInitializer = request -> { 
      credential.initialize(request); 
      request.setReadTimeout(0); 
     }; 

     HttpRequestFactory requestFactory = httpTransport.createRequestFactory(
       requestInitializer); 

     GenericUrl url = new GenericUrl(predictRestUrl); 

     JacksonFactory jacksonFactory = new JacksonFactory(); 
     JsonHttpContent jsonHttpContent = new JsonHttpContent(jacksonFactory, getPayLoad()); 

     ByteArrayOutputStream baos = new ByteArrayOutputStream(); 

     jsonHttpContent.setWrapperKey("instances"); 
     jsonHttpContent.writeTo(baos); 
     LOG.info("Executing request... " + baos.toString()); 
     HttpRequest request = requestFactory.buildPostRequest(url, jsonHttpContent); 

     HttpResponse response = request.execute(); 

するためのコードで、私は頻繁に読んタイムアウト例外を取得するように私は0にReadTimeOutを設定しました。

は今、このコードで、私は頻繁に私達がCloudMLへのREST呼び出しのログを取得することができますCloudML

com.google.api.client.http.HttpResponseException: 500 Internal Server Error 
{ 
    "error": { 
    "code": 500, 
    "message": "Internal error encountered.", 
    "errors": [ 
     { 
     "message": "Internal error encountered.", 
     "domain": "global", 
     "reason": "backendError" 
     } 
    ], 
    "status": "INTERNAL" 
    } 
} 

から以下のエラー応答を取得していますか?これをさらにデバッグするには?

答えて

0

@sagを使用して、500エラーが長い「コールドスタート」によってタイムアウトしたと判断しました。あなたのモデルにしばらくの間トラフィックを送信していない場合、またはより多くのインスタンスをスピンアップする必要があるほど十分に送信した場合、1つまたは複数のインスタンスがスピンアップされる「コールドスタート」が発生します。現在のところ、この処理は時間がかかりすぎて終了する可能性があり、500エラーが発生することがあります。

これらのエラーは安全に再試行できます。指数バックオフを使用することをお勧めします。

関連する問題