IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 实现python作为客户端调用服务的gRPC-demo -> 正文阅读

[网络协议]实现python作为客户端调用服务的gRPC-demo

gRPC是Google开源的一个跨语言和平台的高性能RPC框架。

他的主要特性有:

使用基于HTTP/2的传输协议。带来诸如双向流、流控、头部压缩、单TCP连接上的多复用请求等特性。
使用基于ProtoBuf3.x的数据序列化协议。
可以自动生成多种语言的代码
在这个项目中,我将演示如何使用gRPC创建一个简单的服务,我会用Go作为服务端提供服务,Python3作为客户端调用服务。

在这里,客户端会向服务端发送一组账号和密码。服务端接收到账号和密码后,会将其打印出来,同时拼接后进行Base64编码,然后再返回给客户端。

下面我们就正式开始。

1. 定义数据格式

首先我们使用protobuf定义传输的数据格式.这里我们需要创建protobuf/auth.proto文件,并在里面定义我们要传输和返回的数据格式,以及可以被远程调用的函数。代码看这里。

syntax = "proto3";

option go_package = "protobuf";

package auth;

// 定义客户端要发送的数据格式 
message Request {
  string username = 1;
  string password = 2;
}

// 定义服务端返回的数据格式
message Response {
  string result = 1;
}

// 定义可以被远程调用的函数
service AUTH {
  rpc AuthLogin (stream Request) returns (stream Response) {}
}

2. 自动生成代码

定义好数据格式以后,我们要使用protoc自动生成客户端和服务端代码。这里你需要先安装protoc。

mac用户可以直接用 brew install protobuf 安装。

1.首先生成Python3需要使用的代码。

使用 pip3 install -r requirements.txt 命令安装Python3所需要的包

python3 -m grpc_tools.protoc -I protobuf/ --python_out=./protobuf --grpc_python_out=./protobuf protobuf/auth.proto

这条命令会自动在protobuf文件夹中生成文件 auth_pb2.py 和 auth_pb2_grpc.py
2.生成Go需要使用的服务端代码
使用 go get -u google.golang.org/grpc 安装 go 的 grpc,由于墙的原因,我们可能需要一些别的方法,看这里。

git clone https://github.com/grpc/grpc-go.git $GOPATH/src/google.golang.org/grpc 
git clone https://github.com/golang/net.git $GOPATH/src/golang.org/x/net 
git clone https://github.com/golang/text.git $GOPATH/src/golang.org/x/text 
go get -u github.com/golang/protobuf/{proto,protoc-gen-go} 
git clone https://github.com/google/go-genproto.git $GOPATH/src/google.golang.org/genproto 

cd $GOPATH/src/ 
go install google.golang.org/grpc

protoc -I protobuf/ --go_out=plugins=grpc:protobuf/ protobuf/auth.proto

3. 编写服务端和客户端代码

Go服务端代码请看看server.go文件。

Python客户端代码请看client.py文件。

4. 运行服务

启动Server:

go run server.go

启动client:

python3 client.py

可以看到server收到账号密码,拼接在一起后对其进行Base64编码,然后返回给了客户端。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-03-21 21:30:49  更:2022-03-21 21:32:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:20:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码