(心得和简要过程)
1、首先是创建一个.proto的文件,在里面写上自己将要发行的函数,返回参数和请求参数
安装两个依赖:
python -m pip install grpcio
python -m pip install grpcio-tools
升级依赖:python -m pip install --upgrade 该依赖名
2、再运行启动 .proto文件,生成xxx_pb2_grpc.py,xxx_pb2.py两个py文件:python -m grpc_tools.protoc -I…/…/protos --python_out=. --grpc_python_out=. …/…/protos/xxx.proto
此种启动代码是这个文件都在一个目录下:
python -m grpc_tools.protoc -I. --python_out=. --grpc_python_out=. ./xxx.proto
3、然后创建class类,类中导入route_guide_pb2_grpc.py文件中的Servicer,(grpc后缀的文件是关于服务端的,没有grpc后缀的是关于客户端的);
在该类中创建函数,里面的数据是通过客户端传入,所以可以通过request来接收,(譬如客户端传过来的是data,可以直接request.data就可以得到客户端传过来的值),然后通过1、写的返回参数返回在函数中计算的值;返回的值的格式必须是proto文件中规定的格式。
因为是要返回给客户端就要用没有grpc后缀的文件导入的response。
最后在server端就只剩下连接的问题了,创建grpc.server,然后通过生成的有grpc后缀的文件让导入一个add什么什么来连接该类和grpc.server,最后的最后就只剩下端口的连接了,通过创建的grpc.server来创建一个ip和端口的连接,连接词有add_xxx_port,在里面写上ip和端口号,然后start启动就行了
4、写完服务端,再续写客户端,客户端写的是关于传到服务端的参数,首先也会有一个启动函数run,当然用其他的名字也可以,不一定非得用run。
在开始客户端的函数的编写的时候,首先要明白的是,要先连接服务端,才会有后面的函数中的操作;然后跟服务端一样的,创建一个grpc.insecure_channel的连接,在里面会写上和server服务端一样的ip和端口号,然后通过带有grpc后缀的文件去连接。
用连接的这个值去调用server服务端中的函数,然后将自己所需要的数据传输进去,传输进去的数据会在服务端进行计算,然后通过server端得return返回过来,这个时候怎么接收呢?在刚刚传输数据的时候会调用没有grpc后缀文件的Request(请求参数,传入参数)来进行传输。
在这个过程中就会得到数据,可以通过Response中的刚开始后设计的值获取(譬如在proto文件中给Response设计的参数有data,则可以通过.data来获取相应的data的值)。
如果有多中的计算或者不同的规则,就可以再建一个函数,创建方法如上。以上的函数,里面是可以传入参数进行运算的。