首页 > 解决方案 > 按块从 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,
        },

标签: pythonfilegoogle-cloud-storage

解决方案


如果不使用官方 SDK,我不相信这是可能的,我建议您尝试使用它,因为它具有容错性,并且会自动重试并恢复正在进行的下载。

您可以在本文档中找到使用官方 Python SDK 的示例实现。


推荐阅读