GRPC 學習記錄

GRPC 安裝

安裝 grpcio、grpcio-tools、protobuf、

pip install grpcio -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install grpcio-tools -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install protobuf -i https://pypi.tuna.tsinghua.edu.cn/simple

常用類型

在這里插入圖片描述

proto 文件

// 選擇 proto3
syntax = "proto3";// 名字
package test;// 服務{函數}
service Bilili {rpc Hello(HelloReq) returns (HelloReply) {}  // 雙向非流// rpc Hello(stream HelloReq) returns (stream HelloReply) {}  // stream 保持鏈接
}// 雙向非流 參數定義
// 輸入函數
message HelloReq {string name = 1;int32 age = 2;repeated string data = 3;map<string, demo1> number = 4;
}message demo1 {string n1 = 1;int64 n2 = 2;bool n3 = 3;
}// 返回函數
message HelloReply {string result = 1;
}

proto 文件 轉換為 python 命令

我的文件名:test.proto

python -m grpc_tools.protoc -I. --python_out=. --pyi_out=. --grpc_python_out=. test.proto

客戶端

# client.py
import grpc
import test_pb2_grpc as pb2_grpc
import test_pb2 as pb2def run():# 綁定地址conn = grpc.insecure_channel('127.0.0.1:5001')# 綁定對應服務client = pb2_grpc.BililiStub(channel=conn)# 綁定服務對應的函數response = client.Hello(pb2.HelloReq(name='SB',age=33,data=['1', '2', '3'],number={'sb': pb2.demo1(n1='q', n2=33, n3=True)}), )print(response.result)if __name__ == '__main__':run()

服務端

# service.py
import time
import grpc
import test_pb2 as pb2
import test_pb2_grpc as pb2_grpc
from concurrent import futuresclass Bili(pb2_grpc.BililiServicer):def Hello(self, request, context):name = request.nameage = request.agedata = request.datamap_1 = request.numberresult = f'姓名: {name}, 年齡: {age} 數組:{data} 字典:{map_1}'return pb2.HelloReply(result=result)def run():# 服務grpc_server = grpc.server(# 設置了4個進程futures.ThreadPoolExecutor(max_workers=4),)# 注冊服務pb2_grpc.add_BililiServicer_to_server(Bili(), grpc_server)# 綁定 地址grpc_server.add_insecure_port('0.0.0.0:5001')print('server start..')grpc_server.start()try:while True:time.sleep(3600)# 按Ctrl + cexcept KeyboardInterrupt:# 安全退出grpc_server.stop(0)if __name__ == '__main__':run()

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/42720.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/42720.shtml
英文地址,請注明出處:http://en.pswp.cn/news/42720.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Minio知識點+linux下安裝+面試總結

一 Minio簡介 MinIO 是一個基于Apache License v2.0開源協議的對象存儲服務。它兼容亞馬遜S3云存儲服務接口&#xff0c;非常適合于存儲大容量非結構化的數據&#xff0c;例如圖片、視頻、日志文件、備份數據和容器/虛擬機鏡像等&#xff0c;而一個對象文件可以是任意大小&…

Apache Doris 入門教程31:計算節點

需求場景? 目前Doris是一個典型Share-Nothing的架構, 通過綁定數據和計算資源在同一個節點獲得非常好的性能表現. 但隨著Doris計算引擎性能持續提高, 越來越多的用戶也開始選擇使用Doris直接查詢數據湖數據. 這類場景是一種Share-Disk場景, 數據往往存儲在遠端的HDFS/S3上, 計…

msvcp110.dll是什么意思,msvcp110.dll丟失的解決方法

裝好軟件或游戲之后&#xff0c;一打開就跳出各種報錯信息的情況小伙伴一定見過&#xff0c;其中缺少各種msvcp110.dll文件最常見。小伙伴們一定奇怪&#xff0c;用得好好的電腦&#xff0c;怎么會缺文件呢&#xff1f;為啥其他游戲/應用就沒事呢&#xff1f;其實這些“丟失”的…

visual studio 2022配置

前提&#xff1a;我linux c 開發 一直在使用vscode 更新了個版本突然代碼中的查找所用引用和變量修改名稱不能用了&#xff0c;嘗試了重新配置clang vc都不行&#xff0c;估計是插件問題&#xff0c;一怒之下改用visual studio 2022 為了同步2個IDE之間的差別&#xff0c;目前…

QT的核心——信號與槽

目錄 回顧C 語言信號 1、信號與槽 2、關聯信號與槽 2.1自動關聯信號與槽 2.2手動關聯信號與槽 2.3斷開信號與槽 3、自定義信號 3.1自定義信號使用條件 3.2自定義槽函數使用條件 4、信號與槽參數傳遞 4.1自定義一個帶參的信號 4.2關聯帶參的信號與槽 4.3發送一個帶…

YOLOv5、YOLOv8改進:S2注意力機制

目錄 1.簡介 2.YOLOv5改進 2.1增加以下S2-MLPv2.yaml文件 2.2common.py配置 2.3yolo.py配置 1.簡介 S2-MLPv2注意力機制 最近&#xff0c;出現了基于 MLP 的視覺主干。與 CNN 和視覺Transformer相比&#xff0c;基于 MLP 的視覺架構具有較少的歸納偏差&#xff0c;在圖像識…

LVS-DR+keepalived實現高可用負載群集

VRRP 通信原理&#xff1a; VRRP就是虛擬路由冗余協議&#xff0c;它的出現就是為了解決靜態路由的單點故障。 VRRP是通過一種競選的一種協議機制&#xff0c;來將路由交給某臺VRRP路由。 VRRP用IP多播的方式&#xff08;多播地址224.0.0.18&#xff09;來實現高可用的通信&…

基于STM32+OneNet設計的物聯網智慧路燈

一、前言 近年來&#xff0c;構筑智慧城市、推動城鎮發展被國家列入重要工作范疇。發布的《超級智慧城市報告》顯示&#xff0c;全球已啟動或在建的智慧城市有1000多個&#xff0c;中國在建500個&#xff0c;遠超排名第二的歐洲&#xff08;90個&#xff09;。從在建智慧城市的…

(五)Unity開發Vision Pro——FAQ

常見問題 (FAQ) 1.問&#xff1a;我看到在visionOS 模擬器中運行的結果與在硬件上運行的結果不同 請注意&#xff0c;在模擬器中運行時&#xff0c;某些特定于硬件的功能不可用 - 最明顯的是 AR 數據。這可能意味著 VisionOS 模擬器中的模擬結果可能與 Vision Pro 耳機上的模…

Android oaid

官方GitHub地址 https://github.com/gzu-liyujiang/Android_CN_OAID 生成和用途介紹 https://www.jianshu.com/p/1c7ef27d6db4 圖片來源于上述網站 其他關于id的介紹 https://www.cnblogs.com/chenKnowledgeConllection/p/17380960.html https://zhuanlan.zhihu.com/p/55…

微信小程序拉起支付報: 調用支付JSAPI缺少參數: total_fee

1. 調用支付JSAPI缺少參數: total_fee 2. 檢查返回給前端調起支付的參數是否正確 一開始是params.put("package", prepay_id); 回來改回params.put("package", "prepay_id"prepay_id);

leetcode 415.字符串相加

?? 題目描述 &#x1f31f; leetcode鏈接&#xff1a;https://leetcode.cn/problems/add-strings/description/ ps&#xff1a; 從兩個字符串的末尾開始遍歷&#xff0c;依次相加&#xff0c;若大于等于 10 則使用一個變量記錄進位&#xff0c;遍歷的時候若兩個字符串其中一…

算法通關村——不簡單的字符串轉換問題

1. 轉換成小寫字母 給你一個字符串 s &#xff0c;將該字符串中的大寫字母轉換成相同的小寫字母&#xff0c;返回新的字符串。 轉換成小寫字母 1.1 利用ASCII 首先需要直到常見的ASCII值 a-z: 97-122 A-Z: 65-90 0-9: 48-57 只需要將這個字符串先轉換成字符&#xff0c;然后…

ASR(自動語音識別)任務中的LLM(大語言模型)

一、LLM大語言模型的特點 二、大語言模型在ASR任務中的應用 淺度融合 淺層融合指的是LLM本身并沒有和音頻信息進行直接計算。其僅對ASR模型輸出的文本結果進行重打分或者質量評估。 深度融合 LLM與ASR模型進行深度結合&#xff0c;統一語音和文本的編碼空間或者直接利用ASR…

OKCC在系統安全方面做了哪些措施?

語音通信行業&#xff0c;運營者普遍比較關心的問題是&#xff0c;運營風險如何控制&#xff1f;運營安全如何保證&#xff1f;OKCC呼叫中心又有那些風控措施來保證運營安全。 當前階段&#xff0c;語音通信運營&#xff0c;最主要的風險主要包括以下幾個方面&#xff1a; 一、…

無涯教程-Perl - wait函數

描述 該函數等待子進程終止,返回已故進程的進程ID。進程的退出狀態包含在$?中。 語法 以下是此函數的簡單語法- wait返回值 如果沒有子進程,則此函數返回-1,否則將顯示已故進程的進程ID Perl 中的 wait函數 - 無涯教程網無涯教程網提供描述該函數等待子進程終止,返回已故…

Three.js 實現模型材質局部輝光效果和解決輝光影響場景背景圖顯示的問題

1.Three.js 實現模型材質局部輝光效果 2.解決輝光效果影響場景背景圖顯示的問題 相關API的使用&#xff1a; 1. EffectComposer&#xff08;渲染后處理的通用框架&#xff0c;用于將多個渲染通道&#xff08;pass&#xff09;組合在一起創建特定的視覺效果&#xff09; 2. …

MME: A Comprehensive Evaluation Benchmark for Multimodal Large Language Models

本文也是LLM系列相關文章&#xff0c;針對《MME: A Comprehensive Evaluation Benchmark for Multimodal Large Language Models》的翻譯。 MME:一個多模態大型語言模型的綜合評估基準 摘要1 引言2 MME評估套件3 實驗4 分析5 結論 摘要 多模態大語言模型&#xff08;MLLM&…

Java-運算符和控制語句(上)(基于c語言的補充)

算術運算符 關于求余 不管分子&#xff0c;分母是正還是負&#xff0c;對于分母&#xff0c;直接取正&#xff1b;對于分子若有負號&#xff0c;則先提取出來&#xff1b;剩下兩個正的分子分母運算&#xff1b;最后&#xff0c;若剛才的分子有負號&#xff0c;對最后的結果添加…

Java版 招投標系統簡介 招投標系統源碼 java招投標系統 招投標系統功能設計tbms

? 項目說明 隨著公司的快速發展&#xff0c;企業人員和經營規模不斷壯大&#xff0c;公司對內部招采管理的提升提出了更高的要求。在企業里建立一個公平、公開、公正的采購環境&#xff0c;最大限度控制采購成本至關重要。符合國家電子招投標法律法規及相關規范&#xff0c;以…