[英]TypeError during the call python grpc method without arguments using google/protobuf/empty.proto
I have a proto scheme like this:我有一个这样的原型方案:
import "google/protobuf/empty.proto";
...
service NodeInfoService {
rpc NodeConfig (google.protobuf.Empty) returns (NodeConfigResponse);
}
Using grpc_tools I got classes and now, when I'm trying to send request from py client, but catching the error in "stub.NodeConfig()" call.使用 grpc_tools 我得到了类,现在,当我尝试从 py 客户端发送请求时,但在“stub.NodeConfig()”调用中捕获了错误。 Even If I call it like "stub.NodeConfig({})" or "stub.NodeConfig("")" I have the same TypeError.即使我将其称为“stub.NodeConfig({})”或“stub.NodeConfig("")”,我也有相同的 TypeError。 Full code of client:客户端完整代码:
import grpc
import logging
from util import node_info_service_pb2_grpc
from util import node_info_service_pb2
def run():
with grpc.insecure_channel('ip:port') as channel:
stub = node_info_service_pb2_grpc.NodeInfoServiceStub(channel)
response = stub.NodeConfig(node_info_service_pb2.google_dot_protobuf_dot_empty__pb2.Empty)
print("Echo client received: " + response.message)
if __name__ == '__main__':
logging.basicConfig()
run()
Error :错误:
ERROR:grpc._common:Exception serializing message!
Traceback (most recent call last):
File "/Users/user/p/p/venv/lib/python3.8/site-packages/grpc/_common.py", line 86, in _transform
return transformer(message)
TypeError: descriptor 'SerializeToString' for 'google.protobuf.pyext._message.CMessage' objects doesn't apply to a 'GeneratedProtocolMessageType' object
Traceback (most recent call last):
File "/Users/user/p/scripts/grpc/protobuf/client.py", line 15, in <module>
run()
File "/Users/user/p/scripts/grpc/protobuf/client.py", line 9, in run
response = stub.NodeConfig(node_info_service_pb2.google_dot_protobuf_dot_empty__pb2.Empty)
File "/Users/user/p/p/venv/lib/python3.8/site-packages/grpc/_channel.py", line 921, in __call__
state, call, = self._blocking(request, timeout, metadata, credentials,
File "/Users/user/p/p/venv/lib/python3.8/site-packages/grpc/_channel.py", line 901, in _blocking
raise rendezvous # pylint: disable-msg=raising-bad-type
grpc._channel._InactiveRpcError: <_InactiveRpcError of RPC that terminated with:
status = StatusCode.INTERNAL
details = "Exception serializing request!"
debug_error_string = "None"
Solution :解决方案:
empty = node_info_service_pb2.google_dot_protobuf_dot_empty__pb2.Empty()
response = stub.NodeConfig(empty)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.