Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Not able to connect to grpc from nodejs/python client

My grpc server is in go (go-micro), and it working fine, I have tested both via micro web and go web app (iris).

This is a local grpc setup

I keep getting this error (Stream removed)

{ Error: 2 UNKNOWN: Stream removed
    at new createStatusError ([projectROOT]/node_modules/grpc/src/client.js:64:15)
    at [projectROOT]/node_modules/grpc/src/client.js:583:15
  code: 2,
  metadata: Metadata { _internal_repr: {} },
  details: 'Stream removed' }

and sometimes I get this error (Trying to connect an http1.x server)

{ Error: 14 UNAVAILABLE: Trying to connect an http1.x server
    at new createStatusError ([projectROOT]/node_modules/grpc/src/client.js:64:15)
    at [projectROOT]/node_modules/grpc/src/client.js:583:15
  code: 14,
  metadata: Metadata { _internal_repr: {} },
  details: 'Trying to connect an http1.x server' }

My Node Code

const grpc = require('grpc');

const AuthPB      = require('./auth_pb');
const AuthService = require('./auth_grpc_pb');

const AuthClient = new AuthService.AuthClient(
    `localhost:59685`,
    grpc.credentials.createInsecure()
);

function run(cb) {
  const AuthTokenRequest = new AuthPB.AuthTokenRequest({
    token: `some token`,
  });
  AuthClient.isLoggedIn(AuthTokenRequest, (err, authRes) => {
    if(!err) return cb({status: 1});
    cb({
      status: 0,
      err,
      message: 'Not loggedin',
    });
  });
}


run(console.log);

Facing the same problem with Python code also

Errors
Traceback (most recent call last):
  File "app.py", line 15, in <module>
    run()
  File "app.py", line 11, in run
    res = AuthStub.IsLoggedIn(atReq)
  File "[python3.6-path]/site-packages/grpc/_channel.py", line 484, in __call__
    return _end_unary_response_blocking(state, call, False, deadline)
  File "[python3.6-path]/site-packages/grpc/_channel.py", line 434, in _end_unary_response_blocking
    raise _Rendezvous(state, None, None, deadline)
grpc._channel._Rendezvous: <_Rendezvous of RPC that terminated with (StatusCode.UNAVAILABLE, Trying to connect an http1.x server)>

.

Traceback (most recent call last):
  File "app.py", line 15, in <module>
    run()
  File "app.py", line 11, in run
    res = AuthStub.IsLoggedIn(atReq)
  File "[python3.6-path]/site-packages/grpc/_channel.py", line 484, in __call__
    return _end_unary_response_blocking(state, call, False, deadline)
  File "[python3.6-path]/site-packages/grpc/_channel.py", line 434, in _end_unary_response_blocking
    raise _Rendezvous(state, None, None, deadline)
grpc._channel._Rendezvous: <_Rendezvous of RPC that terminated with (StatusCode.UNKNOWN, Stream removed)>

My Python Code

import grpc
import auth_pb2
import auth_pb2_grpc

def run():
    channel = grpc.insecure_channel('localhost:59685')
    AuthStub = auth_pb2_grpc.AuthStub(channel)
    atReq = auth_pb2.AuthTokenRequest(token='some token')
    res = AuthStub.IsLoggedIn(atReq)
    print("IsLoggedin: " + res.status)

if __name__ == "__main__":
    run()
like image 387
HamidRaza Avatar asked Mar 25 '18 12:03

HamidRaza


People also ask

What is gRPC in node JS?

gRPC is an open-source remote procedure call(RPC) framework created by Google. It is an inter-process communication technology based on HTTP/2, that is used for client-server and duplex streaming of data, and this data streaming is highly efficient because of the use of protocol buffers.

What is Python gRPC?

gRPC is an HTTP/2-based Remote Procedure Call (RPC) framework that uses protocol buffers ( protobuf ) as the underlying data serialization framework. It is an alternative to other language-neutral RPC frameworks such as Apache Thrift and Apache Arvo.


1 Answers

I had same error message when client tried create insecure connection but server use ssl

Try to replace

grpc.credentials.createInsecure()

on

grpc.credentials.createSsl()
like image 140
Alexey Muravyov Avatar answered Oct 22 '22 00:10

Alexey Muravyov