web-dev-qa-db-fra.com

Python impossible de se connecter au canal grpc -> "échec de connexion à toutes les adresses" "grpc_status": 14

J'obtiens l'erreur ci-dessous lorsque j'essaie d'appeler une méthode de stub. Une idée de ce qui en est la cause?

[bolt.api.handlers] 2019-08-21 20:07:57,792 ERROR handlers:1066: 'ResourceHandler' object has no attribute 'ontology_service_handler'
Traceback (most recent call last):
  File "/bolt-webserver/bolt/api/onse/onse_handlers/ontology_service.py", line 17, in post
    ontology_id = await self.onse_stub.createOntology()
  File "/bolt-webserver/bolt/api/onse/onse_stub.py", line 41, in createOntology
    return self.stub.CreateOntology(ontology_messages_pb2.Ontology())
  File "/usr/local/lib/python3.6/site-packages/grpc/_channel.py", line 565, in __call__
    return _end_unary_response_blocking(state, call, False, None)
  File "/usr/local/lib/python3.6/site-packages/grpc/_channel.py", line 467, in _end_unary_response_blocking
    raise _Rendezvous(state, None, None, deadline)
grpc._channel._Rendezvous: <_Rendezvous of RPC that terminated with:
        status = StatusCode.UNAVAILABLE
        details = "failed to connect to all addresses"
        debug_error_string = "{"created":"@1566418077.791002345","description":"Failed to pick subchannel","file":"src/core/ext/filters/client_channel/client_channel.cc","file_line":3818,"referenced_errors":[{"created":"@1566418077.790965749","description":"failed to connect to all addresses","file":"src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc","file_line":395,"grpc_status":14}]}"

J'ai essayé de fournir l'adresse IP au lieu du nom d'hôte mais j'obtiens toujours la même erreur. La classe OnseStub est initialisée juste avant d'appeler la méthode createOntology. Le service est opérationnel. L'appel échoué est effectué à partir d'une application Web tornade (au cas où cela pourrait avoir de l'importance)

class OnseStub:

    def __init__(self, ontology_service_backend):
    self.channel = grpc.insecure_channel('localhost:51051')
    self.stub = ontology_service_pb2_grpc.OntologyServiceStub(self.channel)

    def __del__(self):
    if self.channel != None:
    self.channel.close() # close grpc channel

    async def createOntology(self):
    return self.stub.CreateOntology(ontology_messages_pb2.Ontology())
9
gheorghi evgheniev

C'est une erreur courante, elle peut survenir dans différents cas. Mais dans la plupart des cas décrits dans https://github.com/grpc/grpc/issues/9987 peut être corrigé par la variable d'environnement http_proxy non définie

if os.environ.get('https_proxy'):
 del os.environ['https_proxy']
if os.environ.get('http_proxy'):
 del os.environ['http_proxy']
2
Ilya Davydov