2
votes

Grpc.Core.RpcException StatusCode Unavailable Channel est dans l'état TRANSIENT_FAILURE

J'utilise l'API Google Vision pour obtenir des libellés associés à une image.

 var client = ImageAnnotatorClient.Create();
 var image = Image.FromFile(@"C:\Users\Scorpio\Desktop\th.jpg");
 var response = client.DetectLabels(image); // error
 foreach (var annotation in response)
 {
     if (annotation.Description != null)
           Console.WriteLine(annotation.Description);
 }

entrez la description de l'image ici

Toute idée comment pouvons-nous résoudre ce problème? J'ai essayé d'utiliser des images très courantes comme les drapeaux de pays, mais cela donne quand même une erreur.


1 commentaires

Si vous rencontrez régulièrement ce problème, pourriez-vous essayer l'une des autres API qui utilisent gRPC, par exemple Firestore, Speech, Language, Datastore ou PubSub? Je me demande si cela pourrait être un problème de proxy.


3 Réponses :


0
votes

Je viens de répliquer ce scénario en utilisant votre code et il s'est exécuté avec succès. Sur cette base, il est possible que ce problème soit lié à une erreur temporaire et transitoire du côté service, comme mentionné dans le message d'erreur; cependant, je vous recommande de vérifier que vous ajoutez les bonnes bibliothèques.

Voici le code que j'ai utilisé pour effectuer le test qui inclut le processus d'authentification:

using Google.Cloud.Vision.V1;
using System;
using Grpc.Auth;
using Google.Apis.Auth.OAuth2;

namespace VisionDemo
{
    class Program
    {   
        static void Main(string[] args)
        {
            //Authenticate to the service by using Service Account
            var credential = GoogleCredential.FromFile(@"<CREDENTIALS_JSON_FILE_PATH>").CreateScoped(ImageAnnotatorClient.DefaultScopes);
            var channel = new Grpc.Core.Channel(ImageAnnotatorClient.DefaultEndpoint.ToString(), credential.ToChannelCredentials());
            // Instantiates a client
            var client = ImageAnnotatorClient.Create(channel);
            var image = Image.FromFile(@"<IMAGE_PATH>");
            var response = client.DetectLabels(image); // error
            foreach (var annotation in response)
            {
                if (annotation.Description != null)
                    Console.WriteLine(annotation.Description);
            }

        }
    }
}

Au cas où vous continuez à rencontrer ce problème, vous pouvez consulter le Suivi des problèmes outil que vous pouvez utiliser pour créer une API Vision afin de vérifier ce scénario avec l'équipe d'assistance technique de Google et vérifiez si ce comportement peut être généré avec un problème sur votre projet.


0 commentaires

0
votes
 Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", @"C:\Users\#YOURUSER#\source\repos\PdfToImage\credentials.json");

0 commentaires

0
votes

Je suis tombé sur le même problème. Trouver la cause principale et la corriger.

Le problème est dû au package Nuget: Grpc.Core.Api Ce paquet a été mis à jour vers la version: 2.25.0, alors que Grpc.Core est bloqué à la version 1.22.1 en raison de Google.Api.Gax.Grpc 2.10.0

Rien ne vous empêche de mettre à jour Grpc.Core.Api vers la version 2.25.0, puis de faire face au problème étrange - client.Detect ... méthodes ne renvoyant pas de succès ou d'erreur, rien (je n'ai pas attendu 20 minutes).

Solution Grpc.Core.Api - ramène le numéro de version à 1.22.1

J'espère que cela aide!


0 commentaires