婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 用Python編寫簡單的gRPC服務的詳細過程

用Python編寫簡單的gRPC服務的詳細過程

熱門標簽:長春極信防封電銷卡批發 如何地圖標注公司 上海正規的外呼系統最新報價 銀川電話機器人電話 外賣地址有什么地圖標注 電銷機器人錄音要學習什么 預覽式外呼系統 煙臺電話外呼營銷系統 企業彩鈴地圖標注

gRPC 是可以在任何環境中運行的現代開源高性能 RPC 框架。它可以通過可插拔的支持來有效地連接數據中心內和跨數據中心的服務,以實現負載平衡,跟蹤,運行狀況檢查和身份驗證。它也適用于分布式計算的最后一英里,以將設備,移動應用程序和瀏覽器連接到后端服務。

用Python編寫簡單的gRPC服務

grpc官網python參考:https://www.grpc.io/docs/languages/python/quickstart/
http://grpc.github.io/grpc/python/grpc.html

  • Python 3.5 or higher
  • pip version 9.0.1 or higher

安裝gRPC相關的庫
grpcio-tools主要用根據我們的protocol buffer定義來生成Python代碼,官方解釋是Protobuf code generator for gRPC。

#apt install python3-pip
pip install grpcio
pip install protobuf
pip install grpcio_tools

編寫proto文件

proto是一個協議文件,客戶端和服務器的通信接口正是通過proto文件協定的,可以根據不同語言生成對應語言的代碼文件。

heartbeat.proto文件:

syntax = "proto3";

message HeartbeatRequest{
	string Host      = 1;
	int32  Mem       = 2;
	int32  Disk      = 3;
	int32  Cpu       = 4;
	int64  Timestamp = 5;
	int64  Seq       = 6;

}

message HeartbeatResponse{
	int32  ErrCode   = 1;
	string ErrMsg    = 2;
}

heartbeat_service.proto

syntax = "proto3";

import "heartbeat.proto";

// HeartBeatService
service HeartBeatService{
    rpc HeartBeat(HeartbeatRequest) returns(HeartbeatResponse){}
}

核心 就是一個 用于生成需要用到數據類型的文件;一個就是用于生成相關調用方法的類。 一個定義數據類型,一個用于定義方法。

通過proto生成.py文件

proto文件需要通過protoc生成對應的.py文件。protoc的下載地址 。下載解壓之后,將解壓目錄添加到path的環境變量中。

pip install grpcio
install grpcio-tools
#pip  install --upgrade protobuf

注意:【下面命令是在proto文件所在的目錄執行的,-I 用來指定proto的目錄是 . 】

python -m grpc_tools.protoc -I=. --python_out=.. heartbeat.proto
python -m grpc_tools.protoc -I=. --grpc_python_out=.. heartbeat_service.proto
  • -I 指定proto所在目錄
  • -m 指定通過protoc生成py文件
  • –python_out生成py文件的輸出路徑
  • heartbeat.proto、heartbeat_service.proto為 輸入的proto文件

  • 生成的文件名中 xxx_pb2.py 就是我們剛才創建數據結構文件,里面有定義函數參數和返回數據結構; xxx_pb2_grpc.py 就是我們定義的函數,定義了我們客服端rpc將來要調用方法。

編譯客戶端和服務端代碼

服務端

#!/usr/bin/env python
# coding=utf-8
import sys
from concurrent import futures
import time

import grpc
from google.protobuf.json_format import MessageToJson

import heartbeat_service_pb2_grpc
import heartbeat_pb2
from lib.core.log import LOGGER


class HeartBeatSrv(heartbeat_service_pb2_grpc.HeartBeatServiceServicer):
    def HeartBeat(self, msg, context):
        try:
            # LOGGER.info(MessageToJson(msg, preserving_proto_field_name=True))
            body = MessageToJson(msg, preserving_proto_field_name=True)
            LOGGER.info("Get Heartbeat Request: %s", body)

            response = heartbeat_pb2.HeartbeatResponse()
            response.ErrCode = 0000
            response.ErrMsg = "success"

            return response
        except Exception as e:
            print("exception in heartbeat")
            LOGGER.error("RPC Service exception: %s", e)
            response = heartbeat_pb2.HeartbeatResponse()
            response.ErrCode = 500
            response.ErrMsg = "rpc error: %s" % e
            return response


def server(host, rpc_port):
    # 這里通過thread pool來并發處理server的任務
    # 定義服務器并設置最大連接數,concurrent.futures是一個并發庫,類似于線程池的概念
    grpc_server = grpc.server(futures.ThreadPoolExecutor(max_workers=100))
    # 不使用SSL
    grpc_server.add_insecure_port('[::]' + ':' + str(rpc_port))
    # This method is only safe to call before the server is started.
    #  綁定處理器HeartBeatSrv(自己實現了處理函數)
    heartbeat_service_pb2_grpc.add_HeartBeatServiceServicer_to_server(HeartBeatSrv(), grpc_server)
    # 該方法只能調用一次, start() 不會阻塞
    # 啟動服務器
    grpc_server.start()
    LOGGER.info("server start...")
    while 1:
        time.sleep(10)
    #grpc_server.wait_for_termination()


def main():
    try:
        LOGGER.info("begin start server")

        rpc_port = 8090
        host = "::"
        server(host, rpc_port)

    except Exception as e:
        LOGGER.error("server start error: %s", e)
        time.sleep(5)


if __name__ == '__main__':
    LOGGER.info(sys.path)
    main()

客戶端

from time import sleep

import grpc

import heartbeat_pb2
import heartbeat_service_pb2_grpc
from lib.core.log import LOGGER


def run(seq):
    option = [('grpc.keepalive_timeout_ms', 10000)]
    #
    with grpc.insecure_channel(target='127.0.0.1:8090', options=option) as channel:
        # 客戶端實例
        stub = heartbeat_service_pb2_grpc.HeartBeatServiceStub(channel)
        # stub調用服務端方法
        response = stub.HeartBeat(heartbeat_pb2.HeartbeatRequest(Host='hello grpc', Seq=seq), timeout=10)
        LOGGER.info("response ErrCode:%s", response.ErrCode)


if __name__ == '__main__':

    for i in range(1, 10000):
        LOGGER.info("i: %s", i)
        sleep(3)
        run(i)

參考

使用Python實現gRPC通信
參考URL: https://zhuanlan.zhihu.com/p/363810793
python grpc搭構服務
https://www.jianshu.com/p/10d9ca034567
python grpc 服務端和客戶端調用demo
參考URL: https://blog.csdn.net/qq_42363032/article/details/115282405

到此這篇關于用Python編寫簡單的gRPC服務的文章就介紹到這了,更多相關Python gRPC服務內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

標簽:佳木斯 潮州 西寧 宜昌 湖北 上饒 珠海 盤錦

巨人網絡通訊聲明:本文標題《用Python編寫簡單的gRPC服務的詳細過程》,本文關鍵詞  用,Python,編寫,簡單,的,gRPC,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《用Python編寫簡單的gRPC服務的詳細過程》相關的同類信息!
  • 本頁收集關于用Python編寫簡單的gRPC服務的詳細過程的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲国产精品精华液2区45| 欧美国产精品一区二区三区| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 中文字幕精品一区二区三区精品| 日韩和欧美的一区| 日韩亚洲欧美成人一区| 日本成人超碰在线观看| 欧美一级国产精品| 韩日精品视频一区| 久久精品人人爽人人爽| 菠萝蜜视频在线观看一区| 国产精品乱子久久久久| 色屁屁一区二区| 亚洲在线中文字幕| 在线成人av网站| 精彩视频一区二区三区| 国产精品久久久久一区二区三区| 日本二三区不卡| 捆绑变态av一区二区三区| 精品少妇一区二区三区在线播放| 激情综合色综合久久| 国产亚洲视频系列| 在线观看视频欧美| 日韩国产精品久久| 国产精品天干天干在观线| 欧美日韩国产综合一区二区 | 国产精品99久久久久久似苏梦涵| 亚洲欧洲精品成人久久奇米网| 91一区一区三区| 日本三级亚洲精品| 亚洲欧洲av一区二区三区久久| 91精品国产色综合久久不卡蜜臀| 国产精品亚洲а∨天堂免在线| 亚洲综合激情另类小说区| 欧美成人aa大片| 在线精品视频免费播放| 国产精品影视在线| 亚洲aaa精品| 亚洲色图丝袜美腿| 国产亚洲欧洲一区高清在线观看| 欧美久久久一区| 日本电影亚洲天堂一区| 狠狠色综合播放一区二区| 亚洲1区2区3区视频| 国产清纯白嫩初高生在线观看91 | 亚洲香蕉伊在人在线观| 欧美大度的电影原声| 色婷婷综合久久| 国产精品亚洲专一区二区三区| 首页亚洲欧美制服丝腿| 亚洲桃色在线一区| 国产日产欧美一区| 精品少妇一区二区三区免费观看 | 激情综合色丁香一区二区| 亚洲成人福利片| 成人欧美一区二区三区在线播放| 精品免费99久久| 欧美一区二区三级| 欧美日韩高清影院| 欧美日韩精品一区二区三区| 色视频欧美一区二区三区| 97精品国产露脸对白| 成人免费av在线| av电影天堂一区二区在线观看| 大美女一区二区三区| 国产91对白在线观看九色| 激情图片小说一区| 国产一区二区三区观看| 国产激情一区二区三区| 国产麻豆精品久久一二三| 国产精品性做久久久久久| 精品一区二区三区免费视频| 激情丁香综合五月| 成人激情校园春色| 欧美性一二三区| 7799精品视频| 久久久五月婷婷| 国产精品国模大尺度视频| 亚洲免费视频中文字幕| 亚洲mv在线观看| 国内精品不卡在线| 成人黄色片在线观看| 在线视频亚洲一区| 欧美夫妻性生活| 久久久久久99久久久精品网站| 国产精品午夜免费| 亚洲精品视频在线| 日本va欧美va精品| 成人深夜视频在线观看| 欧美性一级生活| 久久免费国产精品 | 国产精品视频麻豆| 一区二区三区在线观看国产| 国产成人午夜电影网| 韩国av一区二区| 精品成人私密视频| 日韩码欧中文字| 免费人成网站在线观看欧美高清| 国产一区二区主播在线| 成人免费视频一区| 在线一区二区三区四区五区 | 欧美一a一片一级一片| 91精品国产一区二区| 综合在线观看色| 久久99热这里只有精品| 色综合久久久久久久久| 精品少妇一区二区三区日产乱码| 亚洲精品伦理在线| 国产成人免费在线观看不卡| 一本色道久久加勒比精品 | 欧美电影免费观看高清完整版 | 一区二区激情视频| 韩国v欧美v日本v亚洲v| 欧美调教femdomvk| 亚洲va国产va欧美va观看| 国产精华液一区二区三区| 91精品国产综合久久福利| 亚洲欧美日韩久久| 国产乱码字幕精品高清av| 欧美日韩精品欧美日韩精品一| 欧美国产精品中文字幕| 韩国av一区二区三区在线观看| 欧美日韩一级片网站| 依依成人精品视频| 91无套直看片红桃| 亚洲国产高清在线观看视频| 另类综合日韩欧美亚洲| 欧美一区二区在线免费观看| 亚洲一二三区不卡| 欧美一a一片一级一片| 一区二区三区在线免费| 91黄视频在线观看| 亚洲一区二区三区四区在线观看 | 美女尤物国产一区| 欧美乱妇一区二区三区不卡视频| 亚洲精品一二三| 色婷婷av一区| 亚洲一区二区三区四区五区黄| 97精品国产露脸对白| 中文字幕一区二区三区av| 国产黄色91视频| 亚洲国产成人在线| 91亚洲男人天堂| 中文字幕一区二区日韩精品绯色| 成人av集中营| 亚洲免费在线播放| 欧美日韩色综合| 久久精品免费看| 久久久久久久久久久黄色| 国产福利91精品| 日韩激情一二三区| 精品国产免费久久| 成熟亚洲日本毛茸茸凸凹| 国产精品久久看| 在线视频国产一区| 日本欧洲一区二区| 欧美精品一区二区在线观看| 国内精品伊人久久久久av影院| 久久精品人人做人人综合 | 欧美精品自拍偷拍| 久久电影网电视剧免费观看| 国产午夜久久久久| 99综合影院在线| 亚洲激情五月婷婷| 91精品国产91久久久久久最新毛片| 蜜臀久久久久久久| 欧美国产精品v| 色婷婷久久久久swag精品| 日韩精品电影一区亚洲| 国产女主播一区| 欧美日韩亚洲另类| 从欧美一区二区三区| 五月天中文字幕一区二区| 亚洲国产综合视频在线观看| 亚洲一区二区三区四区五区中文| 国产成人av电影在线| 在线精品视频小说1| 精品久久五月天| 91视频国产观看| 久久99精品久久久久久动态图 | 日韩黄色小视频| 国产精品乱人伦一区二区| 欧美激情一区二区在线| 91官网在线观看| 懂色中文一区二区在线播放| 日韩成人免费电影| 亚洲综合在线第一页| 久久精品人人爽人人爽| 欧美三区免费完整视频在线观看| 国产一区二区三区香蕉| 午夜精品一区二区三区电影天堂 | 欧美伊人久久大香线蕉综合69 | 精品理论电影在线观看| 在线日韩一区二区| 9i看片成人免费高清| 国产在线播放一区| 美日韩一级片在线观看| 肉丝袜脚交视频一区二区| 亚洲一级不卡视频| 中文字幕一区二区三区不卡|