- A+
最近在做微服务这一块,后端与java合作,自己是python的,所以考虑使用grpc,一点考虑是grpc是http2.0,另一点考虑是老大要求的:)
初步尝试是在python脚本中与java对接接口,经常官方文档的一顿学习,成功调通了接口
https://grpc.io/docs/quickstart/python.html
不过在教程里clone的那个项目实在是大,不确定哪些是需要的,经过测试后给出需要的:
-
grpcio==1.4.0
-
grpcio-tools==1.4.0
-
xxx.proto 没错,只需要这么一个文件
-
编译xxx.proto的命令
python -m grpc_tools.protoc -I./protos --python_out=. --grpc_python_out=. ./protos/xxx.proto
这里解释一下,python(不解释) -m(也不解释) grpc_tools.protoc(上面安装的三方)
-I./protos(标识当前目录下的protos文件夹,xxx.proto需要在这个文件夹中) --python_out=.(当前目录生成输出文件) --grpc_python_out=.(当前目录生成grpc文件) ./protos/xxx.proto(xxx.proto的相对路径)
在配置好grpc的xxx.proto之后要保证java那边的这个文件要一样(并不是全部,service开始需要完全相同)
运行命令后会生成xxx_pb2.py 和 xxx_pb2_grpc.py两个文件,接下来重点来了(拍桌子)
我既想用django的model又想用grpc该怎么办呢,django是一个服务,grpc是一个服务,直接暴力把grpc代码加入django是没办法使用models和views的。
解决方法就是在greeter_server.py中(这个文件不知道请看上面的链接)加载django,大致如下:
import os
运行时只需要运行该脚本即可,django服务不必启用。