Django的gRPC。

djangogrpcframework的Python项目详细描述


https://img.shields.io/pypi/v/djangogrpcframework.svghttps://readthedocs.org/projects/djangogrpcframework/badge/?version=latesthttps://travis-ci.org/fengsp/django-grpc-framework.svg?branch=masterhttps://img.shields.io/pypi/pyversions/djangogrpcframeworkhttps://img.shields.io/pypi/l/djangogrpcframework

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='')

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java我想访问同一类的不同函数中的函数变量   创建字段/值哈希映射的java反射   java Velocity工具向后兼容性?   cmd JAVA运行时错误:发生JNI错误   java spring引导示例hateoas不工作   java为什么Android Studio和gradle可以使用不同的类路径进行单元测试?   java Selenium Firefox驱动程序初始化   java如何在jar中重新定位gradle依赖项的包   java为什么我的单线程hello world应用程序使用22个OS线程?   正则表达式替换Java字符串中的特殊字符   在任何派生类的构造函数之后运行方法的java   java从输入字符串中找出日期   带有libGdx(Java)音乐的安卓studio可以在Android模拟器上工作,但不能在桌面上工作   java我在getconnection的参数方面有错误吗?   java使用JFileChooser访问选定文件   java如何将Json解析为另一个活动   java使用Resources for html和rest server   java更新列表,列表内容来自循环中的方法   java如何在GLSL中读取完整范围的32位整数纹理