Python:向protobuf服务器发送请求
有人能帮我吗?
我有一个 .proto 文件。
我该如何从客户端发送请求并打印到 socket 服务器?如何给客户端返回响应?
proto文件:
option optimize_for = SPEED;
option java_package = "org.epicsquad.protofile.proto";
package protofile.proto;
enum CommandTypeEnum {
COMMAND_one = 0;
COMMAND_two = 1;
COMMAND_three = 2;
}
enum ResultTypeEnum {
RESULT_ONE = 0;
RESULT_TWO = 1;
message Result {
required uint32 result_one = 1;
optional string result_two = 2;
}
message Request {
optional string req1 = 1;
optional string req2 = 2;
}
message Response {
required string resp1 = 1;
required string resp2 = 2;
}
服务器:
import sys
sys.path.append('../../main')
import protobuf.socketrpc.server as server
server = server.SocketRpcServer(8090)
print 'Serving on port 8090'
server.run()
客户端:
import sys
sys.path.append('../../main')
import protofile_pb2
from protobuf.socketrpc import RpcService
import logging
log = logging.getLogger(__name__)
logging.basicConfig(level=logging.DEBUG)
hostname = 'localhost'
port = 8090
request = protofile_pb2.Request()
我有一个 HelloWorld 的例子,但在那个例子中,发送请求是通过服务进行的。但是在我的 .proto 文件中没有服务消息。谢谢!!!
1 个回答
0
在你的 .proto 文件中添加这一行 option py_generic_services = true;
。如果你不这样做,protoc 就不会生成你需要的用于远程过程调用(rpc)的代码。