我需要将文件从 google 云存储传输到 azure blob 存储。
谷歌提供了一个代码片段来将文件下载到字节变量,如下所示:
# Get Payload Data
req = client.objects().get_media(
bucket=bucket_name,
object=object_name,
generation=generation) # optional
# The BytesIO object may be replaced with any io.Base instance.
fh = io.BytesIO()
downloader = MediaIoBaseDownload(fh, req, chunksize=1024*1024)
done = False
while not done:
status, done = downloader.next_chunk()
if status:
print 'Download %d%%.' % int(status.progress() * 100)
print 'Download Complete!'
print fh.getvalue()
我可以通过更改 fh 对象类型来修改它以存储到文件,如下所示:
fh = open(object_name, 'wb')
然后我可以使用上传到azure blob存储blob_service.put_block_blob_from_path
.
我想避免在进行传输时写入机器上的本地文件。
我收集了 Google 的代码片段,一次将数据加载到 io.BytesIO() 对象中。我认为我应该使用它一次向 blob 存储写入一个块。
我尝试将整个内容读入内存,然后使用上传put_block_blob_from_bytes
,但我遇到内存错误(文件可能太大(~600MB)。
有什么建议么?