0

Mon application s'exécute dans GAE. Cette application fait appel REST à mon CloudML.Erreur interne rencontrée lors de l'appel de CloudML Predict via REST

Voici le code pour que

 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(); 

J'ai mis le ReadTimeout à 0 comme je l'ai souvent lu me exception de délai d'attente.

Maintenant, avec ce code, je reçois souvent la réponse d'erreur ci-dessous de 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" 
    } 
} 

où nous pouvons obtenir les journaux pour appel REST à CloudML? Comment déboguer cela plus loin?

Répondre

0

Nous avons travaillé avec @sag et déterminé que l'erreur 500 est le résultat d'un délai d'attente dû à un long "démarrage à froid". Si vous n'avez pas envoyé de trafic à votre modèle depuis un moment, ou si vous envoyez suffisamment de données pour que nous ayons besoin d'augmenter le nombre d'instances, un "démarrage à froid" sera effectué, où une ou plusieurs instances seront lancées. Actuellement, cela peut être un long processus qui arrive parfois à expiration et une erreur de 500 peut en résulter.

Ces erreurs peuvent être réessayées en toute sécurité; nous vous recommandons d'utiliser la fonction de confirmation exponentielle.