iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >怎么使用Python搭建gRPC服务
  • 685
分享到

怎么使用Python搭建gRPC服务

2023-06-20 12:06:14 685人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍了怎么使用python搭建grpc服务,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、概述一个grpc服务的大体结构图为:图一表明,grpc的服务是跨语言的

这篇文章主要介绍了怎么使用python搭建grpc服务,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

一、概述

一个grpc服务的大体结构图为:

怎么使用Python搭建gRPC服务

图一表明,grpc的服务是跨语言的,但需要遵循相同的协议(proto)。相比于REST服务,gPRC 的一个很明显的优势是它使用了二进制编码,所以它比 JSON/Http 更快,且有清晰的接口规范以及支持流式传输,但它的实现相比rest服务要稍微要复杂一些,下面简单介绍搭建gRPC服务的步骤。

二、安装Python需要的库

pip install grpcio

pip install grpcio-tools  

pip install protobuf

三、定义gRPC的接口

创建 gRPC 服务的第一步是在.proto 文件中定义好接口,proto是一个协议文件,客户端和服务器的通信接口正是通过proto文件协定的,可以根据不同语言生成对应语言的代码文件。这个协议文件主要就是定义好服务(service)接口,以及请求参数和相应结果的数据结构,下面是一个简单的例子。

syntax = "proto3";option cc_generic_services = true;//定义服务接口service GrpcService {    rpc hello (HelloRequest) returns (HelloResponse) {}  //一个服务中可以定义多个接口,也就是多个函数功能}//请求的参数message HelloRequest {    string data = 1;   //数字1,2是参数的位置顺序,并不是对参数赋值    Skill skill = 2;  //支持自定义的数据格式,非常灵活};//返回的对象message HelloResponse {    string result = 1;    map<string, int32> map_result = 2; //支持map数据格式,类似dict};message Skill {    string name = 1;};

四、使用 protoc 和相应的插件编译生成对应语言的代码

python -m grpc_tools.protoc -I ./ --python_out=./ --grpc_python_out=. ./hello.proto

利用编译工具把proto文件转化成py文件,直接在当前文件目录下运行上述代码即可。

-I 指定proto所在目录

-m 指定通过protoc生成py文件

--python_out指定生成py文件的输出路径

hello.proto 输入的proto文件

执行上述命令后,生成hello_pb2.py 和hello_pb2_grpc.py这两个文件。

五、编写grpc的服务端代码

#! /usr/bin/env python# coding=utf8import timefrom concurrent import futuresimport grpcfrom gRPC_example import hello_pb2_grpc, hello_pb2_ONE_DAY_IN_SECONDS = 60 * 60 * 24class TestService(hello_pb2_grpc.GrpcServiceServicer):    '''    继承GrpcServiceServicer,实现hello方法    '''    def __init__(self):        pass    def hello(self, request, context):        '''        具体实现hello的方法,并按照pb的返回对象构造HelloResponse返回        :param request:        :param context:        :return:        '''        result = request.data + request.skill.name + " this is gprc test service"        list_result = {"12": 1232}        return hello_pb2.HelloResponse(result=str(result),                                       map_result=list_result)def run():    '''    模拟服务启动    :return:    '''    server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))    hello_pb2_grpc.add_GrpcServiceServicer_to_server(TestService(),server)    server.add_insecure_port('[::]:50052')    server.start()    print("start service...")    try:        while True:            time.sleep(_ONE_DAY_IN_SECONDS)    except KeyboardInterrupt:        server.stop(0)if __name__ == '__main__':    run()

在服务端侧,需要实现hello的方法来满足proto文件中GrpcService的接口需求,hello方法的传入参数,是在proto文件中定义的HelloRequest,context是保留字段,不用管,返回参数则是在proto中定义的HelloResponse,服务启动的代码是标准的,可以根据需求修改提供服务的ip地址以及端口号。

六、编写gRPC客户端的代码

#! /usr/bin/env python# coding=utf8import grpcfrom gRPC_example import #! /usr/bin/env python# coding=utf8import grpcfrom gRPC_example import hello_pb2_grpc, hello_pb2def run():    '''    模拟请求服务方法信息    :return:    '''    conn=grpc.insecure_channel('localhost:50052')    client = hello_pb2_grpc.GrpcServiceStub(channel=conn)    skill = hello_pb2.Skill(name="engineer")    request = hello_pb2.HelloRequest(data="xiao gang", skill=skill)    respnse = client.hello(request)    print("received:",respnse.result)if __name__ == '__main__':    run()def run():    '''    模拟请求服务方法信息    :return:    '''    conn=grpc.insecure_channel('localhost:50052')    client = hello_pb2_grpc.GrpcServiceStub(channel=conn)    skill = hello_pb2.Skill(name="engineer")    request = hello_pb2.HelloRequest(data="xiao gang", skill=skill)    response = client.hello(request)    print("received:",response.result)if __name__ == '__main__':    run()

客户端侧代码的实现比较简单,首先定义好访问ip和端口号,然后定义好HelloRequest数据结构,远程调用hello即可。需要强调的是,客户端和服务端一定要import相同proto文件编译生成的hello_pb2_grpc, hello_pb2模块,即使服务端和客户端使用的语言不一样,这也是grpc接口规范一致的体现。

七、调用测试

先启动运行服务端的代码,再启动运行客户端的代码即可。

感谢你能够认真阅读完这篇文章,希望小编分享的“怎么使用Python搭建gRPC服务”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网Python频道,更多相关知识等着你来学习!

--结束END--

本文标题: 怎么使用Python搭建gRPC服务

本文链接: https://www.lsjlt.com/news/296623.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么使用Python搭建gRPC服务
    这篇文章主要介绍了怎么使用Python搭建gRPC服务,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、概述一个gRPC服务的大体结构图为:图一表明,grpc的服务是跨语言的...
    99+
    2023-06-20
  • 怎么使用Spring Boot+gRPC构建微服务并部署
    这篇文章主要介绍“怎么使用Spring Boot+gRPC构建微服务并部署”,在日常操作中,相信很多人在怎么使用Spring Boot+gRPC构建微服务并部署问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法...
    99+
    2023-07-02
  • 怎么使用Dubbo开发gRPC服务
    这篇文章主要讲解了“怎么使用Dubbo开发gRPC服务”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用Dubbo开发gRPC服务”吧!基本介绍Dubb...
    99+
    2024-04-02
  • cdn服务器搭建怎么使用
    CDN服务器搭建后,其使用方式通常如下:1、在CDN服务器上添加自己的域名首先需要在CDN服务器上添加自己的域名,以便将自己的内容缓...
    99+
    2023-03-19
    cdn服务器搭建 cdn服务器 服务器
  • nas服务器搭建怎么使用
    1. 连接到NAS服务器:使用网络连接NAS服务器,可以通过浏览器输入NAS服务器的IP地址或者使用NAS提供的客户端连接工具连接N...
    99+
    2023-06-08
    nas服务器 服务器
  • 怎么使用Golang搭建web服务
    今天小编给大家分享一下怎么使用Golang搭建web服务的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。我们先看个例子:htt...
    99+
    2023-06-30
  • 怎么用Python编写简单的gRPC服务
    这篇文章主要介绍了怎么用Python编写简单的gRPC服务,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。gRPC 是可以在任何环境中运行的现代开源高性能 RPC 框架。它可以...
    99+
    2023-06-20
  • python怎么搭建web服务器
    在Python中搭建一个简单的Web服务器可以使用内置的http.server模块。下面是一个基本的示例: import http....
    99+
    2023-10-24
    python 服务器
  • 怎么使用Dnsmasq搭建DNS服务器
    这篇文章主要介绍“怎么使用Dnsmasq搭建DNS服务器”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用Dnsmasq搭建DNS服务器”文章能帮助大家解决问题。一、Dnsmasq安装安装并启动...
    99+
    2023-06-28
  • 怎么使用Node.js搭建Web服务器
    这篇文章主要介绍“怎么使用Node.js搭建Web服务器”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用Node.js搭建Web服务器”文章能帮助大家解决问题。1、 Node.js 创建的第一...
    99+
    2023-07-02
  • 怎么使用Node.js搭建HTTP服务器
    本篇内容主要讲解“怎么使用Node.js搭建HTTP服务器”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Node.js搭建HTTP服务器”吧!什么是 HTTP 服务?HTTP 协议是什么...
    99+
    2023-06-17
  • Docker compose搭建ELK服务怎么使用
    今天小编给大家分享一下Docker compose搭建ELK服务怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下...
    99+
    2023-07-05
  • java中怎么使用xfire搭建webservice服务
    在Java中使用XFire搭建WebService服务,可以按照以下步骤进行操作:1. 下载并导入XFire库:从XFire官网(h...
    99+
    2023-08-11
    java xfire
  • 怎么使用flask轻松搭建mock服务
    本篇内容主要讲解“怎么使用flask轻松搭建mock服务”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用flask轻松搭建mock服务”吧!做过接口测试的...
    99+
    2024-04-02
  • 怎么使用云服务器搭建梯子
    使用云服务器搭建梯子可以有以下几个步骤:选择云服务器:首先,您可以选择一家提供云服务器的商家,比如亚马逊、AWS或阿里云等。这可以帮助您确定需要使用的服务器类型、容量、价格等参数。注册账号:在购买云服务器之前,一定要确保您已经注册了云服务器...
    99+
    2023-10-25
    梯子 服务器
  • 在 Kubernetes 上使用 Flask 搭建 Python 微服务
    微服务遵循领域驱动设计(DDD),与开发平台无关。Python 微服务也不例外。Python3 的面向对象特性使得按照 DDD 对服务进行建模变得更加容易。微服务架构的强大之处在于它的多语言性。企业将其功能分解为一组微服务,每个团队自由选择...
    99+
    2023-05-14
    Python Flask 微服务 Kubernetes
  • GPU服务器购买怎么搭建和使用
    搭建和使用GPU服务器需要以下步骤: 选择合适的GPU服务器:首先要选择适合自己需求的GPU服务器,选择合适的GPU型号和配置。...
    99+
    2024-04-09
    GPU服务器 服务器
  • 怎么使用node.js搭建简单web服务器
    这篇文章主要介绍“怎么使用node.js搭建简单web服务器”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用node.js搭建简单web服务器”文章能帮助大家解决问题。准备首先,需要安装nod...
    99+
    2023-06-17
  • 怎么使用Node.js来搭建本地服务器
    这篇文章主要讲解了“怎么使用Node.js来搭建本地服务器”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用Node.js来搭建本地服务器”吧!1.安装Node.js首先需要安装Node...
    99+
    2023-07-05
  • 云服务器怎么搭建python环境
    搭建Python环境需要准备好相关的依赖,下面是一个简单的Python环境搭建的示例:Python是一种跨平台的编程语言,下面是一些常用的Python依赖库的安装方法:```python pip install python python2...
    99+
    2023-10-25
    环境 服务器 python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作