gRPC python实现文件上传,以及使用流式通信上传超大文件

本文介绍如何使用gRPC实现文件上传功能,包括简单的单向通信方式及针对大文件的流式分块上传方法。文中提供了详细的步骤说明及代码示例。

通过gRPC接口上传文件的优点

使用gRPC上传文件有许多优点:

  1. 实现简单。就是简单地写个接口,而且rprotobuf 定义好了参数,Server端与Client对接方便
  2. 无须部署额外软件。生产环境不需要部署额外软件,如WEB服务器,或第3方软件(如RabbitMQ)。
  3. 支持超大文件传输。 分块传输,可重传,速度快。
  4. 支持加密,还可以使用SSL/TLS加密,token验证等。

本文内容概要

  • 使用单向通信方式文件
  • 使用流式通信上传大文件

单向通信方式上传文件

这种方式编程简单,适合文件不大的应用场景。实现过程如下

定义 protobuf 接口文件

新建1个项目目录,创建uploadfile.proto文件

syntax="proto3";

message UploadRequest {
   
   
    string file_name = 1;
    int32  file_size = 2;
    bytes  content =3; 
}

message UploadResponse {
   
   
    string file_name =1; 
    int32  file_size = 2;
}

service UploadFiles {
   
   
    rpc UploadFile (UploadRequest) returns (UploadResponse);
}

编译proto文件

python -m grpc_tools.protoc --proto_path=. --python_out=. --grpc_python_out=. uploadfile.proto

生成如下文件:
uploadfile_pb2.py
uploadfile_pb2_grpc.py

服务端代码

提供1个 UploadFile() 接口函数,供客户端调用

import grpc
from concurrent.futures import ThreadPoolExecutor
import uploadfile_pb2
import uploadfile_pb2_grpc
import os
import timeit

class uploadfiles_service(uploadfile_pb2_grpc.UploadFilesServicer):
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值