python - 按块从 GCS 下载文件(从字节)
问题描述
我的 Google Cloud Storage 存储桶中有很多.rar
文件,我正在尝试一个一个下载所有文件,解析它们并在本地删除它们。
有时连接丢失,然后我想从停止的地方继续下载,但由于某种原因,当下载完成时,.rar
文件已损坏。
这是我的 Python 代码:
def download_gcs_file(blob):
start = None
to_download_path = os.path.join('/downloads', blob.name)
if os.path.exists(to_download_path):
start = os.path.getsize(to_download_path)
blob.download_to_filename(
filename=to_download_path,
start=start,
)
return to_download_path
if __name__ == '__main__':
retry.api.retry_call(
f=download_gcs_file,
tries=-1,
delay=5,
exceptions=(
requests.exceptions.ChunkedEncodingError,
requests.exceptions.ReadTimeout,
requests.exceptions.ConnectionError,
),
fkwargs={
'blob': blob,
},
- 注意 - 远程文件没有损坏,我手动下载了它,它是有效
.rar
文件。
解决方案
如果不使用官方 SDK,我不相信这是可能的,我建议您尝试使用它,因为它具有容错性,并且会自动重试并恢复正在进行的下载。
您可以在本文档中找到使用官方 Python SDK 的示例实现。
推荐阅读
- vue.js - Vue嵌套路由不包含动态参数
- directx - 我可以在 2 个 D3D11Device 之间共享 ArraySize > 1 的纹理 2D 吗?
- regex - 同时对 /^Subject 和 /^From 进行正则表达式
- elasticsearch - 重新索引 Elasticsearch 将 unixtime 转换为日期
- powerbi - 计算两年之间金额的差异(差异)
- python - Bonobo ETL:如何在执行期间为所有节点提供全局上下文?
- c# - 如何解析div,因为我想要h3标签内的超链接
- javascript - net::ERR_CONNECTION_REFUSED 使用 websockets
- mysql - 通过连接两个表,总和的结果是重复的
- ios - 如何获取表格视图中可见行内容背后的键?