Python实现GCS bucket断点续传功能,分块上传文件

环境:Python 3.6

我有一个关于使用断点续传到Google Cloud Storage的上传速度的问题。我已经编写了一个Python客户端,用于将大文件上传到GCS(它具有一些特殊功能,这就是为什么gsutil对我公司不适用的原因)。在大约2个月前运行的测试中,它很好地利用了可用的连接带宽,其中25Mbps连接中大约有20Mbps。该项目被冻结了将近2个月,现在,当重新打开该项目时,同一客户端以非常慢的速度上载,速度约为25Mbps的1.4Mbps。我已经编写了简单的Python脚本来检查它是否也会遇到相同的问题,并且速度稍快一些,但仍约为2Mbps。Gsutil工具的执行效果几乎与我的Python脚本相同。我还以超过50Mbps的上传速度在不同的网络基础架构上运行了该测试,效果非常好。

参考地址:https://googleapis.dev/python/google-resumable-media/latest/resumable_media/requests.html#resumable-uploads

import google.auth
import google.auth.transport.requests as tr_requests
ro_scope = u'https://www.googleapis.com/auth/devstorage.read_only'
credentials, _ = google.auth.default(scopes=(ro_scope,))
transport = tr_requests.AuthorizedSession(credentials)
from google.resumable_media.requests import ResumableUpload
import iobucket_name='xxxxxxx' # 桶名
csvfile_name = 'xxxxxxxxxxxxxxxxxxxx' # 文件名路径url_template = (u'https://www.googleapis.com/upload/storage/v1/b/'+ bucket_name +'/o?'u'uploadType=resumable')upload_url = url_template.format(bucket=bucket_name)# 分块传输的大小
chunk_size = 1024 * 1024 * 33  # 33MB# 开始断点续传,并分块,意思是说,一个文件比如50M,33M每块要执行两次这个语句
upload = ResumableUpload(upload_url, chunk_size)print(response)
print(upload.resumable_url == response.headers[u'Location'])
print(upload.total_bytes == len(data))
upload_id = response.headers[u'X-GUploader-UploadID']
print(upload_id)
print(upload.resumable_url == upload_url + u'&upload_id=' + upload_id)
response0 = upload.transmit_next_chunk(transport)
print(response0)
print(upload.finished)
print(upload.bytes_uploaded == upload.chunk_size)
response1 = upload.transmit_next_chunk(transport)
print(response1)
print(upload.finished)
print(upload.bytes_uploaded == 2 * upload.chunk_size)
response2 = upload.transmit_next_chunk(transport)
print(response2)
print(upload.finished)
print(upload.bytes_uploaded == upload.total_bytes)
json_response = response2.json()
print(json_response[u'bucket'] == bucket)
print(json_response[u'name'] == blob_name)

任何程序错误,以及技术疑问或需要解答的,请扫码添加作者VX:1755337994

Python实现GCS bucket断点续传功能,分块上传文件相关推荐

  1. vue+elementui 同时有上传文件和批量上传文件功能,上传文件或批量上传文件后必须刷新才能再次上传文件

    报错描述: 使用element-ui的上传文件组件写一个批量上传和上传文件,但是发现每次上传文件后或者批量上传文件后,不能再次上传文件或者批量上传文件.只有进入页面第一次点击上传文件或者批量上传文件才 ...

  2. python 百度云api_Python使用百度API上传文件到百度网盘代码分享

    # coding:UTF-8 import urllib import urllib2 __author__ = 'Administrator' from poster.encode import m ...

  3. python接口自动化(三十) 上传文件时自动判断文件类型(filetype)

    前言 如何判断一个文件的类型呢,判断这个文件是png还是jpg,还是MP3文件?filetype包是python用来判断文件类型的依赖包,github地址:https://github.com/h2n ...

  4. Golang实践录:使用gin框架实现转发功能:上传文件并转

    近段时间需要实现一个转发 post 请求到指定后端服务的小工具,由于一直想学习 gin 框架,所以就使用这个框架进行尝试,预计会产生几篇文章.本文先研究如何在 gin 框架中实现上传和转发功能. 问题 ...

  5. python post 上传文件_如何在 Python 中模拟 post 表单来上传文件

    展开全部 发个以前用urllib2模块来做的62616964757a686964616fe4b893e5b19e31333335343366class HTTPError(urllib2.HTTPDe ...

  6. plupload断点续传 php,Plupload 文件断点续传,文件分块上传

    Plupload 介绍 Plupload 是一款由著名的 Web 编辑器 TinyMCE 团队开发的上传组件,简单易用且功能强大.Plupload 会自动侦测当前的浏览器环境,选择最合适的上传方式,并 ...

  7. minio oss 分块上传

    minio 分块上传 s3协议中是有定义分块上传的接口,minio支持s3协议,所以minio是支持分块上传文件的,只是没有前端直传方案,各种java client有支持分段上传,但是这个分段的方法是 ...

  8. Python联调七牛云异步上传文件

    注:本篇文章参考文献 乾坤大挪移,如何将同步阻塞(sync)三方库包转换为异步非阻塞(async)模式?Python3.10实现.-刘悦. 首先需要拥有一个七牛云的账号 七牛云官网:七牛云 | 一站式 ...

  9. python 全栈开发,Day86(上传文件,上传头像,CBV,python读写Excel,虚拟环境virtualenv)

    python 全栈开发,Day86(上传文件,上传头像,CBV,python读写Excel,虚拟环境virtualenv) 一.上传文件 上传一个图片 使用input type="file& ...

最新文章

  1. js基础---object对象
  2. asp.net mvc4三层架构搭建
  3. 三维坐标 偏转_三维坐标变换原理-平移, 旋转, 缩放
  4. 前端悬浮窗效果_头条|磁悬浮离心机组迎来市场春天
  5. 关于Java String对象创建问题解惑
  6. eclipse 上svn插件的安装,百度知道
  7. POJ3274 Gold Balanced Lineup【Hash函数】
  8. Confluence 6 配置 Office 转换器
  9. tcpip详解卷一 pdf_清华大牛爆肝分享网络底层/网络协议/TCP/IP协议详解卷一
  10. 嵌入式设备引入机器学习:有eIQ就够了!
  11. php zend optimizer 解密,zend guard对php代码加密 zend optimizer解析
  12. jdk12switch表达式
  13. 好好说话之Tcache Attack(3):tcache stashing unlink attack
  14. 【数学计算】判断两条线段是否相交+计算两条线段的交点和夹角
  15. 微信公众号支付从前端到后台(小白教程)
  16. douyin X-Bogus
  17. MapX和MapXtreme区别
  18. OpenCV通过HSV颜色空间过滤图片及目标检测颜色空间范围确定
  19. 销售人员面试题之市场问题
  20. 深富策略:极限反转 行情反攻开启

热门文章

  1. Android手机用wifi连接adb调试的方法
  2. 自己动手实现一个html2canvas
  3. 据说有99%的人都会做错的面试题
  4. windosw7 Hosts文件的位置
  5. [转]C++中sizeof(struct)怎么计算?
  6. 修改EIGRP 路径cost 值,以及分析和实现等价与非等价负载均衡
  7. Type mismatch: cannot convert from int to Object错误
  8. Maven之pom.xml常用标签解析及镜像配置
  9. ps -ef |grep
  10. c++ cdi+示例_C ++“或”关键字示例