grpc服務python版本

2021-09-03 07:21:14 字數 2084 閱讀 7937

# tools 包含**生成工具,會自動安裝依賴的 grpcio 包

pip install grpcio_tools

編寫協議檔案pi.proto

syntax = "proto3";

package pi;

// pi service

service picalculator

}// pi input

message pirequest

// pi output

message piresponse

python -m grpc_tools.protoc -i. --python_out=. --grpc_python_out=. pi.proto
server端**

# -*- coding:utf-8 -*-

# server.py

import math

import grpc

import time

from concurrent import futures

import pi_pb2, pi_pb2_grpc

# 圓周率計算服務實現類

class

picalculatorservicer

(pi_pb2_grpc.picalculatorservicer)

:def

calc

(self, request, context)

:# 計算圓周率的邏輯在這裡

s =0.0for i in

range

(request.n)

: s +=

1.0/(2

* i +1)

/(2* i +1)

# 注意返回的是乙個響應物件

return pi_pb2.piresponse(value=math.sqrt(

8* s)

)def

main()

:# 多執行緒伺服器

server = grpc.server(futures.threadpoolexecutor(max_workers=10)

)# 例項化圓周率伺服器類

pi_server = picalculatorservicer(

)# 註冊本地服務

pi_pb2_grpc.add_picalculatorservicer_to_server(pi_server, server)

# 監聽埠

server.add_insecure_port(

"127.0.0.1:8080"

)# 開始接收請求進行服務

server.start(

)# 使用ctrl+c可以退出服務

try:

time.sleep(

1000

)except keyboardinterrupt:

server.stop(0)

if __name__ ==

'__main__'

: main(

)

client端**

# -*- coding:utf-8 -*-

# client.py

import grpc

import pi_pb2

import pi_pb2_grpc

defmain()

: channel = grpc.insecure_channel(

'localhost:8080'

)# 使用 stub

client = pi_pb2_grpc.picalculatorstub(channel)

# 呼叫吧

for i in

range(1

,1000):

print

(client.calc(pi_pb2.pirequest(n=i)

).value)

if __name__ ==

'__main__'

: main(

)

go版本gRPC入門

本文通過乙個簡單的示例,了解如何在go中使用grpc。使用命令列安裝 使用以下命令安裝grpc go get google.golang.org grpc 獲取編譯器外掛程式protoc gen go,並將其安裝在 gobin路徑中,預設為 gopath bin。5 必須設定好 path環境變數,協...

如何用Python搭建gRPC服務

目錄 乙個grpc服務的大體結構圖為 圖一表明,grpc的服務是跨語言的,但需要遵循相同的協議 proto 相比於rest服務,gprc 的乙個很明顯的優勢是它使用了二進位制編碼,所以它比 json http 更快,且有清晰的介面規範以及支援流式傳輸,但它的實現相比rest服務要稍微要複雜一些,下面...

gRPC 如何確認TLS版本

因客戶需求grpc必須支援ssl tls1.2以上的版本,之前納悶沒有檢視支援tls版本的選項和巨集開關,後續想到可以通過抓包工具獲取協議頭的資訊。但是我實際通過wireshark模擬抓包資料確不是tlsv1.2,而是tlsv1。後續排查發現,有可能是openssl版本的問題。加密組同事提供的版本是...