J'ai le même problème sur mon PC (OS : ubuntu 16.04 LTS, protobuf 3.4.0).
alors j'ai cherché la raison et j'ai trouvé ceci :
Raison
Si, sur une machine Linux, la variable d'environnement "http_proxy" habituelle est configurée, gRPC en tiendra compte lors de la tentative de connexion, mais ignorera ensuite le paramètre no_proxy correspondant :
Par exemple :
$ env
http_proxy=http://106.1.216.121:8080
no_proxy=localhost,127.0.0.1
$ ./greeter_client
D0306 16:00:11.419586349 1897 combiner.c:351] C:0x25a9290 finish old_state=3
D0306 16:00:11.420527744 1896 tcp_client_posix.c:179] CLIENT_CONNECT: ipv4:106.1.216.121:8080: on_writable: error="No Error"
D0306 16:00:11.420567382 1896 combiner.c:145] C:0x25a69a0 create
D0306 16:00:11.420581887 1896 tcp_client_posix.c:119] CLIENT_CONNECT: ipv4:106.1.216.121:8080: on_alarm: error="Cancelled"
I0306 16:00:11.420617663 1896 http_connect_handshaker.c:319] Connecting to server 127.0.0.1:50051 via HTTP proxy ipv4:106.1.216.121:8080
En gros, il utilise l'url http_proxy pour se connecter alors que localhost est dans la liste no_proxy. Puisque la valeur par défaut de no_proxy inclut localhost sur la plupart des machines linux, le résultat final est que tout utilisateur avec un http_proxy configuré ne sera jamais capable de se connecter à localhost. --- [ 1 ]
Vous pouvez activer le traçage de grpc avec export GRPC_TRACE=all && ./greeter_server
et même chose pour le client.
Vérification
Terminal 1 Terminal 2
Cela devrait faire l'affaire
ps. pour plus d'informations sur GRPC_TRACE - Variables d'environnement gRPC
Référence
- gRPC ne respecte pas la variable d'environnement no_proxy