Django的gRPC。
djangogrpcframework的Python项目详细描述
Django gRPC框架是一个用于构建gRPC服务的工具包,其灵感来自 djangorestframework。在
要求
- Python(3.6、3.7、3.8)
- Django(2.2,3.0),Django REST框架(3.10.x,3.11.x)
- gRPC,gRPC工具,proto3
安装
$ pip install djangogrpcframework
{$tt2}添加到^$tt1}:
^{pr2}$演示
下面是一个使用gRPC框架构建一个简单 模型支持服务用于访问用户,启动新项目:
$ django-admin startproject demo $ python manage.py migrate
生成.proto文件demo.proto:
python manage.py generateproto --model django.contrib.auth.models.User --fields id,username,email --file demo.proto
生成gRPC代码:
python -m grpc_tools.protoc --proto_path=./ --python_out=./ --grpc_python_out=./ ./demo.proto
现在编辑demo/urls.py模块:
fromdjango.contrib.auth.modelsimportUserfromdjango_grpc_frameworkimportgenerics,proto_serializersimportdemo_pb2importdemo_pb2_grpcclassUserProtoSerializer(proto_serializers.ModelProtoSerializer):classMeta:model=Userproto_class=demo_pb2.Userfields=['id','username','email']classUserService(generics.ModelService):queryset=User.objects.all()serializer_class=UserProtoSerializerurlpatterns=[]defgrpc_handlers(server):demo_pb2_grpc.add_UserControllerServicer_to_server(UserService.as_servicer(),server)
就这样,我们完了!在
$ python manage.py grpcrunserver --dev
现在您可以运行gRPC客户端来访问该服务:
withgrpc.insecure_channel('localhost:50051')aschannel:stub=demo_pb2_grpc.UserControllerStub(channel)foruserinstub.List(demo_pb2.UserListRequest()):print(user,end='')
- 项目
标签: