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()

相关文章:
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常用类型 p…...
C++语言的QT写软件界面,结合python深度学习模型的综合应用处理方案
C与python问题合集: 后面内容涉及到api的创建问题 如果我用C语言的QT写软件界面,然后用python语言去写和人工智能相关的东西。就比如说一些模型,那么现在我想将用python写的模型放在QT写的软件当中调用,那么请问是否会导致C语言…...
Linux环境下python连接Oracle教程
下载Oracle client需要的 安装包 rpm包下载地址:Oracle官方下载地址 选择系统版本 选择Oracle版本 下载3个rpm安装包 oracle-instantclient12.2-basic-12.2.0.1.0-1.i386.rpm oracle-instantclient12.2-devel-12.2.0.1.0-1.i386.rpm oracle-instantclient12.2-sq…...
第 7 章 排序算法(1)
7.1排序算法的介绍 排序也称排序算法(Sort Algorithm),排序是将一组数据,依指定的顺序进行排列的过程。 7.2排序的分类: 内部排序: 指将需要处理的所有数据都加载到**内部存储器(内存)**中进行排序。外部排序法: 数据量过大&am…...
wsl,字体乱码问题
配置wsl,字体乱码问题 一、前言 用zsh配置好wsl,每次打开还是会出现乱码,只有再新打开一个终端才会显示字体 如下图:第一次打开,出现乱码 如图:按加号,再开一个新终端才会显示字体。 二、解…...
【NetCore】10-路由定义
文章目录 路由与终结点:如何规划好Web Api1. 路由1.1 路由映射1.2 路由注册方式1.3 路由约束总结: Web Api定义 路由与终结点:如何规划好Web Api 1. 路由 1.1 路由映射 路由系统核心作用是指URL和应用程序Controller的对应关系的一种映射 这种映射的作…...
软考:中级软件设计师:数据库模式、ER模型
软考:中级软件设计师:数据库模式、ER模型 提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对未来更多的可能性 关于互联网大厂的笔试面试,都是需要细心准…...
海量数据迁移,亚马逊云科技云数据库服务为大库治理提供新思路
1.背景 目前,文档型数据库由于灵活的schema和接近关系型数据库的访问特点,被广泛应用,尤其是游戏、互联网金融等行业的客户使用MongoDB构建了大量应用程序,比如游戏客户用来处理玩家的属性信息;又如股票APP用来存储与时…...
DevOps系列文章之 GitlabCICD自动化部署SpringBoot项目
一、概述 本文主要记录如何通过Gitlab CI/CD自动部署SpringBoot项目jar包。 二、前期准备 准备三台 CentOS7服务器,分别部署以下服务: 序号系统IP服务1CentOS7192.168.56.10Gitlab2CentOS7192.168.56.11Runner (安装Docker)3Cen…...
汽车租赁管理系统/汽车租赁网站的设计与实现
摘 要 租赁汽车走进社区,走进生活,成为当今生活中不可缺少的一部分。随着汽车租赁业的发展,加强管理和规范管理司促进汽车租赁业健康发展的重要推动力。汽车租赁业为道路运输车辆一种新的融资服务形式、广大人民群众一种新的出行消费方式和…...
语句覆盖、条件覆盖、判定覆盖、条件-判定覆盖、路径覆盖
白盒测试是结构测试,主要对代码的逻辑进行验证。 逻辑覆盖率:语句覆盖<条件覆盖<判定覆盖<条件-判定覆盖<组合覆盖<路径覆盖 例子 一、语句覆盖 最基础的覆盖,只要每一个执行处理框内的语句都能执行就可,不用关注…...
二进制逻辑运算符
运算的优先级:非>与>或 1.逻辑与:“ ∧ \wedge ∧“,“ ⋅ \cdot ⋅“,and 在逻辑问题中与是所有的都是真结果才是真,比如: 1010101011 1010101011 1010101011和 1010110010 1010110010 1010110010…...
Bug日记-webstorm运行yarn 命令报错
在windows中输入yarn -v正确输出,在webstrom终端中运行yarn命令输出错误 问题:可能是由于 WebStorm 配置问题导致的。 解决方案: 检查 WebStorm 的终端配置:在 WebStorm 中,点击菜单栏的 “File”(文件&am…...
C++11并发与多线程笔记(9) async、future、packaged_task、promise
C11并发与多线程笔记(9) async、future、packaged_task、promise 1、std::async、std::future创建后台任务并返回值2、std::packaged_task:打包任务,把任务包装起来3、std::promise3、小结 1、std::async、std::future创建后台任务…...
Mr. Cappuccino的第63杯咖啡——Spring之AnnotationConfigApplicationContext源码分析
Spring之AnnotationConfigApplicationContext源码分析 源码分析 源码分析 以上一篇文章《Spring之Bean的生命周期》的代码进行源码分析 AnnotationConfigApplicationContext applicationContext new AnnotationConfigApplicationContext(SpringConfig02.class); LifeCycleBe…...
opencv直方图与模板匹配
import cv2 #opencv读取的格式是BGR import numpy as np import matplotlib.pyplot as plt#Matplotlib是RGB %matplotlib inline def cv_show(img,name):cv2.imshow(name,img)cv2.waitKey()cv2.destroyAllWindows() 直方图 cv2.calcHist(images,channels,mask,histSize,ran…...
Apache Doris 入门教程31:计算节点
需求场景 目前Doris是一个典型Share-Nothing的架构, 通过绑定数据和计算资源在同一个节点获得非常好的性能表现. 但随着Doris计算引擎性能持续提高, 越来越多的用户也开始选择使用Doris直接查询数据湖数据. 这类场景是一种Share-Disk场景, 数据往往存储在远端的HDFS/S3上, 计…...
Nacos和GateWay路由转发NotFoundException: 503 SERVICE_UNAVAILABLE “Unable to find
问题再现: 2023-08-15 16:51:16,151 DEBUG [reactor-http-nio-2][CompositeLog.java:147] - [dc73b32c-1] Encoding [{timestampTue Aug 15 16:51:16 CST 2023, path/content/course/list, status503, errorService Unavai (truncated)...] 2023-08-15 16:51:16,17…...
2021年9月全国计算机等级考试真题(二级C语言)
2021年9月全国计算机等级考试真题(二级C语言) 第1题 下列叙述中正确的是( )。 A. 算法的复杂度是指算法所处理的数据量 B. 算法的复杂度是指算法程序中指令的数量 C. 算法的复杂度是指算法控制结构的复杂程度 D. 算法的复杂度包…...
串口通讯
USART是全双工同步通讯 在同步通信中,数据信号所传输的内容绝大多数属于有效数据,而异步通信中包含了各种帧的标识符,所以同步通讯的效率更高。但是同步通信对时钟要求苛刻,允许的误差小。而异步通信则允许双方的误差较大 比特率…...
从科研到工程:为什么我选择用ROS2重构Apollo/autoware的规控算法?
从科研到工程:为什么我选择用ROS2重构Apollo/autoware的规控算法? 在自动驾驶领域,从实验室原型到量产系统的跨越,往往伴随着技术栈的全面升级。三年前,当我第一次将Apollo的规划控制模块移植到ROS1环境时,…...
从Java转行大模型应用,Advanced-RAG 学习
一、RAG 进阶概述(Advanced-RAG)基础RAG(检索增强生成)核心是“检索生成”的两阶段流程,解决大模型“幻觉”和知识时效性问题,但在复杂场景(长文档、模糊查询、高精准需求)中存在检索…...
Illustrator脚本大全:30个免费工具彻底改变你的设计工作流
Illustrator脚本大全:30个免费工具彻底改变你的设计工作流 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 如果你是一名Adobe Illustrator用户,每天重复着相…...
MediaPipeUnityPlugin技术解构与实战指南:Unity AI视觉开发进阶之路
MediaPipeUnityPlugin技术解构与实战指南:Unity AI视觉开发进阶之路 【免费下载链接】MediaPipeUnityPlugin Unity plugin to run MediaPipe 项目地址: https://gitcode.com/gh_mirrors/me/MediaPipeUnityPlugin 问题发现:Unity AI视觉开发的现实…...
不会写C代码也能做飞控?手把手教你用Matlab/Simulink和FMT搭建无人机算法模型
零代码飞控开发实战:用Matlab/SimulinkFMT实现无人机算法快速迭代 当无人机行业从极客玩具转向工业级应用时,传统飞控开发模式正面临严峻挑战——某高校研究团队曾花费三个月手工编写PID控制代码,却在首次试飞时因姿态解算模块的数值溢出导致…...
自编码器在异常检测中的实战应用:以金融交易数据为例
自编码器在金融异常检测中的实战指南:从数据清洗到模型部署 金融交易数据中的异常行为检测一直是风险控制的核心环节。传统基于规则的系统难以应对日益复杂的欺诈模式,而自编码器这类无监督学习模型正在改变游戏规则。本文将带您从零构建一个完整的异常检…...
Claude Code 命令行参数实践指南
前言 很多人第一次打开 Claude Code,只会输入 claude,然后开始聊天。这当然可以,但就像开车只会踩油门一样——你根本没用上方向盘和变速箱。 命令行参数(CLI Flags)就是那些被忽视的"方向盘"。掌握它们&a…...
【花雕学AI】打破AI轻量化极限!MimiClaw:5美元芯片上跑的纯 C 轻量 AI 智能体
提到AI智能体,很多人的第一印象是“需要高性能服务器支撑”“离不开复杂操作系统”“功耗高到不敢长时间运行”——但MimiClaw的出现,彻底打破了这种固有认知。作为全球首个能在仅售5美元的ESP32-S3芯片上流畅运行的纯C编写轻量AI智能体,Mimi…...
三大痛点终结!猫抓插件:颠覆式网页资源提取与管理解决方案
三大痛点终结!猫抓插件:颠覆式网页资源提取与管理解决方案 【免费下载链接】cat-catch 猫抓 chrome资源嗅探扩展 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否曾遇到这样的困境:在视频网站看到精彩教程想保存离…...
Fish-Speech-1.5 API调用教程:Python脚本批量生成语音
Fish-Speech-1.5 API调用教程:Python脚本批量生成语音 1. 为什么选择Fish-Speech-1.5进行批量语音生成 在日常工作中,我们经常遇到需要将大量文本转换为语音的场景。无论是为视频内容生成旁白,还是为电子书制作有声版本,传统的人…...
