【gRPC】protoc文件转py文件

以下基于Win系统下Python的venv虚拟环境演示

  • 《Python3笔记之venv虚拟环境》
  • 《Python笔记之pip国内镜像修改方法》

在桌面创建个test目录作为项目目录,初始化venv环境后,安装基础依赖:

pip install grpcio grpcio-reflection grpcio-tools protobuf googleapis-common-protos

实战pip环境依赖清单

建立个项目结构:

|- example_proto|- core|- user.proto
|- proto_output
|- ProtoToPy.bat

准备user.proto文件,例如:

syntax = "proto3"; // proto版本package core.user;  // 文件夹层级,对应文件名,用.表示层级message AddUserRequest { // 请求参数string username = 1;  // 用户名uint32 age = 2;       // 密码
}message AddUserResponse { // 响应参数uint32 uid = 1;   // 用户id
}// 定义接口服务
service UserService {// 提供服务接口rpc AddUser(AddUserRequest) returns (AddUserResponse);
}

准备ProtoToPy.bat批处理脚本文件(也可不整),例如:

@echo off:: 项目目录路径
@set PROJECT_DIR=C:/Users/dev/Desktop/test
:: proto文件所在目录路径
@set PROTOC_DIR=%PROJECT_DIR%/example_proto
:: 转化后的文件存放路径
@set OUTPUT_DIR=%PROJECT_DIR%/proto_output
:: 待转化proto文件(相对PROTOC_DIR)
@set PROTO_NAMES=core/user.proto@python -m grpc_tools.protoc -I %PROTOC_DIR% --python_out=%OUTPUT_DIR% --grpc_python_out=%OUTPUT_DIR% --pyi_out=%OUTPUT_DIR% %PROTO_NAMES%

完事,在项目目录下执行这个批处理脚本就好了
在这里插入图片描述
此时,我们就可以得到以下PY文件:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/660694.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

证券开户怎么联系专属客户经理?新手必看!

证券开户联系专属客户经理的方式有很多,可以通过手机网上找客户经理,现在这种方式是最多的,比如咱们网站都是各大券商专业的客户经理,在线联系就可以帮您安排。您自己也可以挑选自己觉得好的券商和客户经理,然后再沟通…

Backtrader 文档学习- Broker - Trade

Backtrader 文档学习- Broker - Trade 1. 概述 交易的定义: 通过操作持仓从0变为大小为X时(可能为正/负,对于多头/空头头寸),则交易处于开放状态。当持仓从X变为0时,交易关闭。 以下两个操作&#xff1a…

使用Server-Sent Events实现后端主动向前端进行通信

目录 概述 使用 Server-Sent Events (SSE) 示例 1.创建SpringBoot项目添加web依赖,并编写以下代码 2.创建Vue项目并在项目的.vue文件中编写以下代码 效果说明 使用触发的方式向前端传递数据 总结 概述 在典型的前后端分离架构中,前端通过发起 H…

静态HTML引入vue封装组件

在对历史原生html代码使用vue重构项目时,可以利用vue相关组件进行项目优化、实现统一管理,本文结束htmlvue的构建方式,欢迎大家阅读交流。 1、 下载vue.js 可自行到官网下载所需版本或者使用cdn资源 2、封装通用组件 2.1 封装通用实例化m…

MIMIC-IV官方视图解析 - cardiac_marker心脏标记表

今天在学习官方衍生表mimiciv_derived.cardiac_marker心脏标记表时候发现了一些问题: 该表中troponin_t (肌钙蛋白t)的值结果都是空值null 或者 ___ (由于去标识化), 这明显是不合理的 小编查看了该表的官…

MySQL-运维篇-日志

一、错误日志 二、二进制日志 1、介绍 2、日志格式 3、日志查看 4、日志删除 三、查询日志 四、慢查询日志

汽车软件开发模式的5个特点

汽车软件开发属于较为复杂的系统工程,经常让来自不同知识背景的工程师在观点交锋时出现分歧。在解决复杂性和对齐讨论基准时,可以通过勾勒出讨论对象最关键的几个特征来树立典型概念。本文旨在通过5个典型特点的抽取,来勾勒出汽车软件开发模式…

python实现贪吃蛇小游戏(附源码)

文章目录 导入所需的模块坐标主游戏循环模块得分 贪吃蛇小游戏,那个曾经陪伴着00后和90后度过无数欢笑时光的熟悉身影,仿佛是一把打开时光之门的钥匙。它不仅是游戏世界的经典之一,更是我们童年岁月中不可或缺的一部分,一个承载回…

Spring如何进行参数校验

在Java开发中,对输入参数进行校验是一个非常重要的环节,它可以帮助我们避免非法数据对程序造成的影响。Spring框架提供了多种方式进行参数校验,本文将详细介绍如何在Spring中进行参数校验。 一、使用Spring的Validated和Valid注解 Spring提供…

新媒体与传媒行业数据分析实践:从网络爬虫到文本挖掘的综合应用,以“中国文化“为主题

大家好,我是八块腹肌的小胖, 下面将围绕微博“中国文化”以数据分析、数据处理、建模及可视化等操作 目录 1、数据获取 2、数据处理 3、词频统计及词云展示 4、文本聚类分析 5、文本情感倾向性分析 6、情感倾向演化分析 7、总结 1、数据获取 本…

征集各位的意见

1.B站 下一个月我打算在B站开始上传视频教程了,关注我的有一部分是看我TMS320F28377D的,有一部分是看我LPC804M101的,我这里问一下大家想先看哪个教程?好多盆友看我文章里都描述的不是很清楚,可能我上传B站&#xff0…

SwiftUI 动画入门之一:路径动画(Path Animations)

概览 在 SwiftUI 的开发中,我们往往需要使用千姿百态的动画把我们的界面元素妆点的更加鲜活灵动。 如上图所示,我们使用路径动画使折线图更加生动了!这是怎么做到的呢? 在本篇博文中,您将学到以下内容: 概览1. 路径与形状(Path and Shape)2. 路径动画的原理3. 让路径…

Zookeeper服务注册与发现实战

目录 设计思路 Zookeeper注册中心的优缺点 SpringCloudZookeeper实现微服务注册中心 第一步:在父pom文件中指定Spring Cloud版本 第二步:微服务pom文件中引入Spring Cloud Zookeeper注册中心依赖 第三步: 微服务配置文件application.y…

页面切换导致echarts不加载的问题

1. 问题描述 在A页面写了echarts,初始化dom元素加载,显示正常.当切换到B页,再切换回A页面时,echarts加载不出来. f12召唤出来看看报错,没有问题,但是有这样的警告 渲染echarts的dom元素上多了一个" echarts_instance "的属性,这是用来表示唯一性的. 2. 问题解决 …

杂题——试题-算法训练-P0604-runaround数

分析: 题目有三个关键点: 一:结束时,回到起始位置(比较结束时和起始时的下标位置是否相同)二:该整数的所有数字都必须遍历一遍,且只能遍历一遍(把遍历过的数字做个标记&a…

记录下Flybirds移动端ui自动化框架的搭建

一、参考文档 1.官方文档:携程机票跨端跨框架 BDD UI 自动化测试方案Flybirds — flybirds v0.1.5 文档 2.Flybirds运行环境:Flybirds运行环境 - 简书 3.Windows系统连接IOS安装tidevice:iOS自动化之tidevice-CSDN博客 二、Windows系统演…

JavaScript中,异步获取数据通常使用回调函数

在JavaScript中,异步获取数据通常使用回调函数、Promise对象或者async/await来处理。以下是几种常见的方法: 1. 回调函数:可以在异步请求完成后,将获取到的数据作为参数传递给回调函数。例如: function getData(call…

最佳解决Css一隐藏滚动条

最佳解决Css一隐藏滚动条 方法一&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><meta name"viewport" content"widthdevice-width,initial-scale1.0"></head><style>.element, .…

力扣_字符串2—最长有效括号

题目 给你一个只包含 ‘(’ 和 ‘)’ 的字符串 s s s&#xff0c;找出最长有效&#xff08;格式正确且连续&#xff09;括号子串的长度。 方法 动态规划 d p [ i ] dp[i] dp[i] 表示以 s [ i ] s[i] s[i] 结尾的最长有效括号的长度如果 s [ i ] s[i] s[i] 为左括号&#…

DNS服务实战:使用自定义域名访问Redis服务

前言 在这篇文章中,你将了解到如何在 CentOS 系统上安装 Redis 服务,并且掌握通过自定义域名来访问 Redis 服务的技巧。通过使用自定义域名,你可以方便地管理和访问你的 Redis 数据库,提高工作效率。无论你是开发者、系统管理员还是对 Redis 感兴趣的读者,这篇文章都会为…