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

这篇具有很好参考价值的文章主要介绍了Fast-GRPC: 用python轻松开发grpc接口。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

Fast-GRPC 框架旨在为开发者提供更轻松快捷的 Python gRPC 接口开发方式,受到 FastAPI 的启发,用更human的方式编写 gRPC 接口(减少犯错),通过使用 Python schema 直接定义 gRPC 接口,然后自动生成gRPC proto,从而省去了在 proto 文件中再次定义接口的繁琐工作;框架简化了 Python gRPC 开发流程,同时提供与 FastAPI 类似的接口编写风格,接口可以支持同步和异步写法,并且还可以使用 Middleware(可以代替gRPC拦截器,自带的拦截器感觉不太好用)。个人认为,在 Python 微服务实践中,结合 FastAPI 和 gRPC 并利用流行的微服务基础设施(比如微软dapr),将是一个不错的选择。

安装

需要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。文章来源地址https://www.toymoban.com/news/detail-439611.html

到了这里,关于Fast-GRPC: 用python轻松开发grpc接口的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • rpc、gRPC快速入门,python调用,protobuf协议

    rpc、gRPC快速入门,python调用,protobuf协议

    远程过程调用协议RPC (Remote Procedure Call Protocol) RPC是指远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据 举例:在 a服务内

    2024年02月13日
    浏览(11)
  • 跨界协作:借助gRPC实现Python数据分析能力的共享

    跨界协作:借助gRPC实现Python数据分析能力的共享

    gRPC是一个高性能、开源、通用的远程过程调用(RPC)框架,由Google推出。 它基于HTTP/2协议标准设计开发,默认采用Protocol Buffers数据序列化协议,支持多种开发语言。 在gRPC中,客户端可以像调用本地对象一样直接调用另一台不同的机器上服务端应用的方法,使得您能够更容

    2024年02月19日
    浏览(14)
  • 二蛋赠书四期:《Go编程进阶实战:开发命令行应用、HTTP应用和gRPC应用》

    二蛋赠书四期:《Go编程进阶实战:开发命令行应用、HTTP应用和gRPC应用》

    大家好!我是二蛋,一个热爱技术、乐于分享的工程师。在过去的几年里,我一直通过各种渠道与大家分享技术知识和经验。我深知,每一位技术人员都对自己的技能提升和职业发展有着热切的期待。因此,我非常感激大家一直以来对我的关注和支持。 为了回馈大家的厚爱,

    2024年02月08日
    浏览(11)
  • 在CSDN学Golang场景化解决方案(基于grpc的微服务开发脚手架)

    在Golang基于gRPC的微服务开发中,可以采用TLS加密通信来确保服务与服务之间的安全通信。下面是一个简单的设计示例: 生成证书和密钥: 定义gRPC服务器: 客户端连接gRPC服务器: 在服务实现中添加TLS加密通信: 这样,在Golang基于gRPC的微服务开发中,就可以使用TLS加密通信

    2024年02月14日
    浏览(10)
  • API 接口主流协议有哪些?如何创建 HTTP/HTTP、WebSocket/WebSockets、TCP/UDP、gRPC、SOAP、Dubbo/HSF 等不同协议?

    API 接口主流协议有哪些?如何创建 HTTP/HTTP、WebSocket/WebSockets、TCP/UDP、gRPC、SOAP、Dubbo/HSF 等不同协议?

    API 接口协议繁多,不同的协议有着不同的使用场景。70% 互联网应用开发者日常仅会接触到最通用的 HTTP 协议,相信大家希望了解更多其他协议的信息。我们今天会给大家介绍各种 API 接口主流协议和他们之间的关系。 接口协议分成两类: 传输层协议和应用层协议。 传输层协

    2023年04月21日
    浏览(15)
  • 猫头虎博主赠书三期:《Go编程进阶实战: 开发命令行应用、HTTP应用和gRPC应用》

    猫头虎博主赠书三期:《Go编程进阶实战: 开发命令行应用、HTTP应用和gRPC应用》

    🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页 ——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文并茂🦖生动形象🐅简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍专栏》 🐾 学会IDEA常用操作,工作效率翻倍~💐 🌊 《100天精通Golang(基础

    2024年02月09日
    浏览(13)
  • 云原生 envoy xDS 动态配置 java控制平面开发 支持restful grpc实现 EDS 动态endpoint配置

    云原生 envoy xDS 动态配置 java控制平面开发 支持restful grpc实现 EDS 动态endpoint配置

    大纲 基础概念 Envoy 动态配置API 配置方式 动静结合的配置方式 纯动态配置方式 实战 Envoy 的强大功能之一是支持动态配置,当使用动态配置时,我们不需要重新启动 Envoy 进程就可以生效。 Envoy 通过从磁盘文件或网络接口 读取配置,动态地重新加载配置。动态配置使用所谓的

    2024年02月12日
    浏览(11)
  • gRPC之gRPC Gateway

    gRPC之gRPC Gateway

    etcd3 API全面升级为gRPC后,同时要提供REST API服务,维护两个版本的服务显然不太合理,所以 grpc-gateway 诞生了。通过protobuf的自定义option实现了一个网关,服务端同时开启gRPC和HTTP服务, HTTP服务接收客户端请求后转换为grpc请求数据,获取响应后转为json数据返回给客户端。结构

    2024年02月07日
    浏览(10)
  • 【gRPC】go语言实现gRPC(示例实践演示)

    【gRPC】go语言实现gRPC(示例实践演示)

    目录 1、获取gRPC和Protobuf依赖 2、安装protobuf编译器 3、安装两个插件  4、编译proto文件 5、服务端 6、客户端 7、结果展示 goLand配置 Release Protocol Buffers v21.6 · protocolbuffers/protobuf · GitHub Protocol Buffers - Google\\\'s data interchange format - Release Protocol Buffers v21.6 · protocolbuffers/protobuf https:

    2023年04月09日
    浏览(15)
  • 基于grpc-java开发的普通工程在k8s内部署多实例,如何实现客户端流量的负载均衡

    基于grpc-java开发的普通工程在k8s内部署多实例,如何实现客户端流量的负载均衡

    本文主要讨论通过grpc-java开发的普通的java grpc工程,以多实例的方式部署在容器编排平台kubernetes(以下简称k8s)上,如何能够实现让同样部署在k8s 集群内的客户端请求流量均衡的分发到多个grpc应用部署实例上去。 grpc服务端程序在k8s内部署的多个实例通过headless service暴露服

    2024年01月17日
    浏览(9)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包