iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python使用grpc,并打包成pyt
  • 801
分享到

python使用grpc,并打包成pyt

pythongrpcpyt 2023-01-31 06:01:40 801人浏览 八月长安

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

摘要

xmlrpc也是可行的方案,也相对更加简单 一、环境python3.6 二、安装模块 pip3 install grpcio pip3 install protobuf pip3 install grpcio-tools 三、准备grp

  • xmlrpc也是可行的方案,也相对更加简单

一、环境
python3.6
二、安装模块

pip3 install grpcio
pip3 install protobuf
pip3 install grpcio-tools

三、准备grpc配置文件grpcdatabase.proto
目录结构:
python使用grpc,并打包成python模块
内容如下:

syntax = "proto3";
package grpcServer;
service Greeter {
    rpc GetContent (Request) returns (Return) {} //定义要调用的函数(GetContent)+(Request)接受的参数+(Return)返回的参数
}

message Request {       //传参数据类型
    string content = 1;//文本
    int32 code=2;      //返回状态0success;1failed
}

message Return {       //返回数据类型
    string message = 1;//文本
    int32 code=2;      //返回状态0success;1failed
}
//执行命令+安装步骤
//python3 -m grpc_tools.protoc -I. --Python_out=grpc_base_models/ --grpc_python_out=grpc_base_models/ grpcdatabase.proto

编译:生成grpcatabase_pb2.py grpcdatabase_pb2_grpc.py文件

python3 -m grpc_tools.protoc -I. --python_out=grpc_base_models/ --grpc_python_out=grpc_base_models/ grpcdatabase.proto

python使用grpc,并打包成python模块
编写服务端代码:

# -*- coding: utf-8 -*-
# @author: chenhuachao
# @time: 2019/3/7
# Servers.py
import sys
sys.path.append('grpc_base_models')
import grpc
import time
from concurrent import futures
import grpcdatabase_pb2
import grpcdatabase_pb2_grpc
# from grpc_base_models import grpcdatabase_pb2
# from grpc_base_models import grpcdatabase_pb2_grpc

_SLEEP_TIME = 60
_HOST = "0.0.0.0"
_PORT = "19999"

class RpcServer(grpcdatabase_pb2_grpc.GreeterServicer):
    def GetContent(self, request, context):
        '''
        获取文章摘要
        :param request:
        :param context:
        :return:
        '''
        try:
            _content = request.content
            code = 0
        except Exception as e:
            _content = str(e)
            code=1
        return grpcdatabase_pb2.Return(message=_content,code=code)

def server():
    if sys.argv.__len__()>=2:
        _PORT = sys.argv[1]
    else:
        _PORT = "19999"
    grpcServer = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
    grpcdatabase_pb2_grpc.add_GreeterServicer_to_server(RpcServer(), grpcServer)
    grpcServer.add_insecure_port("{0}:{1}".fORMat(_HOST, _PORT))
    grpcServer.start()
    try:
        while True:
            time.sleep(_SLEEP_TIME)
    except KeyboardInterrupt:
        grpcServer.stop(0)

if __name__ == '__main__':
    server()

编写客户端代码:

# -*- coding: utf-8 -*-
# @author: chenhuachao
# @time: 2019/3/7
# Client.py
import sys
import grpc
sys.path.append('grpc_base_models')
import grpcdatabase_pb2_grpc
import grpcdatabase_pb2
# from grpc_base_models import grpcdatabase_pb2_grpc
# from grpc_base_models import grpcdatabase_pb2

# _HOST = '192.168.3.191'
_HOST = '127.0.0.1'
_PORT = '19999'

def RpcClient(funcname,content):
    '''
    rpc客户端程序
    :param funcname: 可用funcname为下面两个
        >>> GetContent  获取摘要, 参数:content='文本'
        *** 上面两个函数均返回message属性和code(1:failed 0:success)属性
        >>> 返回值:response.message   response.code
    :return:
    '''
    with grpc.insecure_channel("{0}:{1}".format(_HOST, _PORT)) as channel:
        client = grpcdatabase_pb2_grpc.GreeterStub(channel=channel)
        if hasattr(client,funcname):
            response = getattr(client,funcname)(grpcdatabase_pb2.Request(content=content))
        else:
            raise Exception(u"函数名错误")
    print("message=" , response.message)
    print( "code=",response.code)
if __name__ == '__main__':
    text = u'''
    测试的文本
    '''
    RpcClient('GetContent',text)

分别运行:Server.py 和Client.py 查看结果
python使用grpc,并打包成python模块

上面服务端代码每次使用,都要依赖grpcdatabase_pb2*.py这两个文件,因此,我们可以打包为python模块。更加方便使用

添加setup.py文件在根目录下:结构图
python使用grpc,并打包成python模块
setup.py文件内容如下

# -*- coding: utf-8 -*-
# @author: chenhuachao
# @time: 2019/3/8
# setup.py

from setuptools import setup,find_packages
setup(
    name = "grpc_base_models",
    version = "0.0.1",
    keyWords = ("pip", "pygrpc", "company", "chenhuachao"),
    description = "python版本的grpc公用模块,个人项目专用,仅供参考",
    long_description="grpc server for python",
    license="MIT Licence",
    url="https://GitHub.com/leizhu900516",
    author="chenhuachao",
    author_email="leizhu900516@163.com",
    packages = find_packages(),
    install_requires = [
        'grpcio==1.19.0',
        'grpcio-tools==1.19.0',
        'protobuf==3.7.0',
    ]
)

打包:
python3 setup.py sdist 如下图:
python使用grpc,并打包成python模块
安装:pip install dist/grpc_base_models-0.0.1.tar.gz
即可在python脚本中使用
引用即可:

from grpc_base_models import grpcdatabase_pb2_grpc
from grpc_base_models import grpcdatabase_pb2

** 附上代码地址python版grpc实例

--结束END--

本文标题: python使用grpc,并打包成pyt

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

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

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

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

下载Word文档
猜你喜欢
  • python使用grpc,并打包成pyt
    xmlrpc也是可行的方案,也相对更加简单 一、环境python3.6 二、安装模块 pip3 install grpcio pip3 install protobuf pip3 install grpcio-tools 三、准备grp...
    99+
    2023-01-31
    python grpc pyt
  • 如何使用Python存储二维码并打包成文件?
    二维码已经成为了我们生活中不可或缺的一部分,无论是支付、加好友还是查看商品信息,都需要通过二维码来实现。在这种情况下,如何使用Python存储二维码并打包成文件呢?本文将为你介绍如何使用Python来实现这一功能。 第一步:安装必要的库 ...
    99+
    2023-08-18
    存储 二维码 打包
  • python打包之pyinstaller(打包成exe)
    一、安装 pyinstaller 直接pip在线安装 pip install pyinstaller 二、指令介绍 常用指令 -h,–help查看该模块的帮助信息-F,-onefile产生单个的可执行...
    99+
    2023-09-07
    python opencv
  • 使用PyInstaller库把Python程序打包成exe
    一、pyinstaller简介 Python是一个脚本语言,被解释器解释执行。它的发布方式: .py文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装Pytho...
    99+
    2024-04-02
  • 使用springboot打包成zip部署,并实现优雅停机
    众所周知springboot项目,使用springboot插件打包的话,会打包成一个包含依赖的可执行jar,非常方便。只要有java运行环境的电脑上,运行java -jar xxx....
    99+
    2024-04-02
  • 如何使用 Python 打包 Spring 项目并提高并发能力?
    Spring 是一款流行的 Java 开发框架,它具有高度的灵活性和可扩展性。然而,与其他 Java 应用程序一样,Spring 应用程序可能会因为高并发和请求负载而变得缓慢。为了解决这个问题,我们可以使用 Python 的一些工具来打包...
    99+
    2023-09-07
    打包 spring 并发
  • 使用maven打包生成doc文档和打包源码
    maven打包生成doc文档和打包源码 在pom.xml中加入如下插件 <build> <plugins> <...
    99+
    2024-04-02
  • python如何打包成exe
    你可以使用PyInstaller将Python项目打包成exe文件,并指定运行的特定py文件。 以下是具体步骤: 安装PyInstaller 在命令行中输入以下命令: ``` pip install pyinstaller ``` 打包...
    99+
    2023-08-31
    python 开发语言
  • 如何使用PyInstaller库把Python程序打包成exe
    这篇文章主要介绍“如何使用PyInstaller库把Python程序打包成exe”,在日常操作中,相信很多人在如何使用PyInstaller库把Python程序打包成exe问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对...
    99+
    2023-06-30
  • 怎么使用python多进程程序打包成exe
    这篇文章主要介绍了怎么使用python多进程程序打包成exe的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用python多进程程序打包成exe文章都会有所收获,下面我们一起来看看吧。部分的多进程代码if&...
    99+
    2023-07-04
  • Python实现暴力破解wifi密码并打包成exe
    目录前言功能点预览前置准备-依赖库Python tkinter编写GUI界面密码字典开撸打包成exe演示PS前言 python号称是编程界的万金油,那么是否可以做个读取电脑网卡wif...
    99+
    2024-04-02
  • centos7使用vim打造强大的pyt
    编译升级vim centos7.3自带的vim是7.4.*版本, YouCompleteMe需要Vim 7.4.1578+我这里编译安装vim8.0 # 移除旧版本 sudo yum remove vim -y # 安装必要组件 sudo...
    99+
    2023-01-31
    强大 vim pyt
  • unidbg-boot-server使用并打包jar调用
    其实线上使用可以多种方式,比如pom引入spring boot自己去写一个接口实现; 但如果并发不是很高,可以使用synchronized关键字进行,若对并发有要求,建议直接使用 unidbg-boot-server开源项目; 从githu...
    99+
    2023-08-17
    jar json java
  • 如何使用Springboot打成jar包thymeleaf
    这篇文章主要介绍了如何使用Springboot打成jar包thymeleaf,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Springboot打成jar包thymeleaf1...
    99+
    2023-06-25
  • Python打包成exe的方法
    这篇文章主要介绍“Python打包成exe的方法”,在日常操作中,相信很多人在Python打包成exe的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python打包成exe的方法”的疑惑有所帮助!接下来...
    99+
    2023-06-15
  • 【Python】项目打包:如何使用PyInstaller打包python程序(exe)
    文章目录 前言一、PyInstaller二、安装PyInstaller库三、PyInstaller的使用1.命令行+参数2.py文件+参数2.1配置文件config.py2.2打包文件pyTe...
    99+
    2023-09-02
    python 开发语言 qt5
  • Python中使用Json 以及 Pyt
    最近编写python中,需要使用python中的json模块,所以尝试对Json模块做一个简单的了解 什么是json:Json是javaScript 中规定的一种轻量级文件格式,后来在其他语言中也逐渐添加了对Json的支持,所以pyt...
    99+
    2023-01-31
    Python Json Pyt
  • 【Python 01】使用UE配置Pyt
          一直在使用UE来进行python编程,觉得在UE下进行python编程使用起来还是很方便地,现在特来总结一下: 1、首先是python环境搭建 (1)下载python2.7 https://www.python.o...
    99+
    2023-01-31
    Python Pyt UE
  • 如何使用 Golang 构建 RESTful API 并使用gRPC?
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-15
  • 如何使用pyinstaller打包Python
    小编给大家分享一下如何使用pyinstaller打包Python,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、单个文件打包1.1 简单打包例如现在有一个mai...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作