首页 > 编程语言 >Fast-GRPC: 用python轻松开发grpc接口

Fast-GRPC: 用python轻松开发grpc接口

时间:2023-05-16 22:12:23浏览次数:49  
标签:pb2 GRPC Fast python gRPC Greeter grpc

简介

Fast-GRPC 旨在帮助开发者更加轻松快捷地使用 Python 开发 gRPC 接口。它的特点包括简化步骤、简单上手、快速开发,同时支持异步和同步代码,以及支持 Middleware,灵感来自FastAPI。

安装

需要python 3.7+

pip install python-fast-grpc

快速上手

下面是一个简单的 Fast-GRPC 示例,展示如何创建一个 gRPC 服务

from fast_grpc import BaseSchema, FastGRPC, ServicerContext, method

app = FastGRPC()

class HelloRequest(BaseSchema):
    name: str

class HelloReply(BaseSchema):
    message: str

class Greeter:
    @method("SayHello", request_model=HelloRequest, response_model=HelloReply)
    async def say_hello(self, request: HelloRequest, context: ServicerContext) -> HelloReply:
        return HelloReply(message=f"Greeter SayHello {request.name}")

app.add_service(Greeter)  # 添加Greeter服务
# 启动 gRPC 服务。无需手动编写 proto 文件,Fast-GRPC 会根据你的 Python 代码自动生成 proto 文件,并编译为 Python gRPC 代码,最后启动 gRPC 服务
app.run()

在上面的示例中,我们首先使用 FastGRPC 创建了一个 gRPC 应用。接下来,定义了一个 gRPC 服务 Greeter,使用 method 装饰器标记了一个 RPC 方法 say_hellomethod 接受三个参数:RPC 方法名、请求模型 HelloRequest 和响应模型 HelloReplysay_hello 方法可以支持同步和异步代码,对于同步代码,会使用线程来模拟异步执行。

最后,我们将 Greeter 服务添加到 gRPC 应用中,并通过 run 方法启动 gRPC 服务器。Fast-GRPC 会根据添加的 Greeter 服务的接口定义自动生成 .proto 文件和 Python gRPC 代码,简化了 Python gRPC 的开发步骤,更符合 Python 的使用习惯。

接下来,我们通过一个客户端调用来演示效果:

import grpc
import greeter_pb2 as pb2
import greeter_pb2_grpc as pb2_grpc

channel = grpc.insecure_channel("127.0.0.1:50051")
stub = pb2_grpc.GreeterStub(channel)
response = stub.SayHello(pb2.HelloRequest(name="fastGRPC"))
print("Greeter client received: ", response)

相关链接

Fast-GRPC GitHub 仓库

下一步计划

目前,Fast-GRPC 支持的功能还比较简单,未来将继续改进和完善。如果您有任何建议或意见,请不要犹豫,欢迎提交 issue 或者 PR。

标签:pb2,GRPC,Fast,python,gRPC,Greeter,grpc
From: https://www.cnblogs.com/liyatao/p/17392654.html

相关文章

  • Grpc MagicOnion库 之 客户端和服务端 (案例版)
    之前通过自己写动态代理和用现成的动态代理库等实现过RPC功能,今天,就写一下如何直接引用GRPC的库来实现业务逻辑。gRPC的介绍,之前我也说了这个g的含义太多,也包含谷歌的意思了。可以看这个gRPC的文档介绍:https://grpc.io/docs/what-is-grpc/MagicOnion这个库用它是因为它内部使用......
  • python字符串的45个内置方法
    1.字符串拼接和查找: 2.字符串分割替换和大小写操作: 3.字符串判断内容: 4.字符串剩下操作: ......
  • python学生管理系统笔记(+增删改查,但不存入数据库或文件中)
    原本的基础上+增删改查,但不存入数据库或文件中,就是数据只在一次运行的页面中进行增删改查,但是重新运行不会有之前的数据,因为没有更新到json或者数据库中。1.LoginPage.pyimporttkinterastkfromtkinterimportmessageboxfromdbimportdbfromMainPageimportMainPage......
  • Python 运算符
    1、算术运算符运算符描述实例+加-两个对象相加a+b输出结果30-减-得到负数或是一个数减去另一个数a-b输出结果-10*乘-两个数相乘或是返回一个被重复若干次的字符串a*b输出结果200/除-x除以yb/a输出结果2%取模-返回除法的余数......
  • python day 04
    字符串(str)作用:用来记录人的名字、家庭住址、性别等描述性质的状态定义字符串:方式1: name='kevin'#用的多方式2 name="kevin"#用的多方式3: name='''kevin'''(当三引号左边有赋值符号和变量名的时候,它是字符串,否则为注释)方式4: name=......
  • 掌握Python开发三部曲
    最近不少人在公众号后台或是微信直接问我Python开发需要掌握哪些或是问有木有书推荐或是问能不能给点电子书这年头最便宜的投资就是买、买、买书不管什么时候最好的提升就看书、看书、看书对于没有Python基础的,建议你买本《Python基础教程》成体系的把Python3所有基础均有涉及,你需......
  • Python数据离散化指南:手写if-elif语句与pandas中cut()方法的实现
    当我们进行数据分析时,有时候需要对数值型数据进行离散化,将其划分为不同的标签或类别。这样做可以方便我们进行统计和分析,并帮助我们更好地理解数据。在本文中,我们将介绍两种常见的离散化方法,并提供实现代码。方法一:使用条件语句第一种方法是使用条件语句来显式地检查输入值x......
  • How to use the Raspberry Pi and Python to control a DHT11 wet and temperate modu
    HowtousetheRaspberryPiandPythontocontrolaDHT11wetandtemperatemoduleAllInOne如何使用树莓派和Python来控制温湿度模块demos(......
  • python高级技术(死锁、递归锁、信号量、Event时间、进程池、线程池、协程)
    一死锁和递归锁(了解)进程也有死锁与递归锁,使用方法类似所谓死锁:是指两个或两个以上的进程或线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。当你知......
  • Python语法入门
    数据类型(续上)1.字符串(str)不用于计算,仅用于描述,任何数据类型都可以转变为字符串,类似文本的存在。 方式(被引号引起来的部分):   1. name= '蔡敏'   推荐使用   2.  name= "蔡敏"   推荐使用   3. name=  '''蔡敏'''   ......