无法使gRPC与python请求一起使用rest api调用

时间:2019-06-26 10:45:37

标签: python-requests grpc grpc-python

在连接grpc客户端/服务器以侦听其余请求时需要帮助。要执行发布请求

非常感谢您的帮助。

digestor.proto

import "google/api/annotations.proto";
service Digestor{
 rpc GetDigestor(DigestMessage) returns (DigestedMessage) {}
}

service DigestorRest {
  rpc GetDigestor(DigestMessage) returns (DigestedMessage) {
    option (google.api.http) = {
      get: "/v1/digest"
      body: "*"
    };
  }
}

在生成pb2文件之后。

grpc-请求可以正常运行

curr_client = DigestorClient()
print(curr_client.get_digest("Test Message"))

我的休息/得到请求:

requests.get(url='http://localhost:46001/v1/digest')

应该返回正确的响应,但是我得到

requests.exceptions.ConnectionError: ('Connection aborted.', BadStatusLine('\x00\x00\x18\x04\x00\x00\x00\x00\x00\x00\x04\x00@\x00\x00\x00\x05\x00@\x00\x00\x00\x06\x00\x00 \x00þ\x03\x00\x00\x00\x01\x00\x00\x04\x08\x00\x00\x00\x00\x00\x00?\x00\x01\x00\x00\x08\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'))

1 个答案:

答案 0 :(得分:0)

我想您正在使用GCP Transcoding功能。如果您尚未尝试过本教程,请尝试完成示例步骤。

gRPC协议基于HTTP2而不是HTTP1。 requests库是HTTP1。 requests报告的异常看起来像协议不匹配。因此,您的GCP Endpoints设置中可能存在问题。