日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python打包和添加数据文件_python使用grpc,并打包成python模块

發(fā)布時間:2023/12/15 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python打包和添加数据文件_python使用grpc,并打包成python模块 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

xmlrpc也是可行的方案,也相對更加簡單

一、環(huán)境

python3.6

二、安裝模塊

pip3 install grpcio

pip3 install protobuf

pip3 install grpcio-tools

三、準備grpc配置文件grpcdatabase.proto

目錄結構:

內(nèi)容如下:

syntax = "proto3";

package grpcServer;

service Greeter {

rpc GetContent (Request) returns (Return) {} //定義要調(diào)用的函數(shù)(GetContent)+(Request)接受的參數(shù)+(Return)返回的參數(shù)

}

message Request { //傳參數(shù)據(jù)類型

string content = 1;//文本

int32 code=2; //返回狀態(tài)0success;1failed

}

message Return { //返回數(shù)據(jù)類型

string message = 1;//文本

int32 code=2; //返回狀態(tài)0success;1failed

}

//執(zhí)行命令+安裝步驟

//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

編寫服務端代碼:

# -*- 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 獲取摘要, 參數(shù):content='文本'

*** 上面兩個函數(shù)均返回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"函數(shù)名錯誤")

print("message=" , response.message)

print( "code=",response.code)

if __name__ == '__main__':

text = u'''

測試的文本

'''

RpcClient('GetContent',text)

分別運行:Server.py 和Client.py 查看結果

上面服務端代碼每次使用,都要依賴grpcdatabase_pb2*.py這兩個文件,因此,我們可以打包為python模塊。更加方便使用

打包

添加setup.py文件在根目錄下:結構圖

setup.py文件內(nèi)容如下

# -*- 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 如下圖:

安裝: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打包和添加数据文件_python使用grpc,并打包成python模块的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。