如何使用python将文件以块的形式传输到azure blob存储而不写入文件

2023-12-10

我需要将文件从 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)。

有什么建议么?


根据源代码blobservice.py用于 Azure 存储 and BlobReader适用于谷歌云存储,您可以尝试使用Azure功能blobservice.put_block_blob_from_file从 GCS 类写入流blobreader有这个功能read作为流,请参见下文。

enter image description here

enter image description here

所以参考代码https://cloud.google.com/appengine/docs/python/blobstore/#Python_Using_BlobReader,您可以尝试按如下方式执行此操作。

from google.appengine.ext import blobstore
from azure.storage.blob import BlobService

blob_key = ...
blob_reader = blobstore.BlobReader(blob_key)

blob_service = BlobService(account_name, account_key)
container_name = ...
blob_name = ...
blobservice.put_block_blob_from_file(container_name, blob_name, blob_reader)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用python将文件以块的形式传输到azure blob存储而不写入文件 的相关文章

随机推荐

  • GoogleMaps MapView 在 Android 中点击时崩溃?

    我目前正在编写一个显示 MapView 的应用程序 其中显示谷歌地图 我使用了 你好地图视图 教程http developer android com resources tutorials views hello mapview html
  • 如何在Android中询问相机的运行时权限,运行时存储权限

    我正在开发一个应用程序 只需单击按钮即可扫描条形码 并且它在 Lollipop 版本上运行良好 当我来到棉花糖时它就停止工作了 这是错误 camerabase 连接到相机 0 时发生错误 它迫使我通过以下方式打开权限 设置 gt 应用程序
  • 在 InterfaceBuilder 中调整 NavigationController 的大小

    这可能是一个愚蠢的问题 但是有没有办法调整故事板中导航控制器的大小 它只是占用了太多的屏幕空间 我的大多数视图都是大小合适的弹出窗口 但旁边有一个巨大的 iPad 大小的导航控制器 这纯粹是为了 Interface Builder 中的视觉
  • java.sql.Timestamp 时区是否特定?

    我必须将 UTC 日期时间存储在数据库中 我已将特定时区中给出的日期时间转换为 UTC 为此 我遵循了以下代码 我输入的日期时间是 20121225 10 00 00 Z 时区是 亚洲 加尔各答 我的服务器 数据库 oracle 在同一时区
  • 如何在Python字符串中包含反斜杠和引号[重复]

    这个问题在这里已经有答案了 我有一系列特殊字符 看起来像这样 specialCharList lt gt 问题是 我想包含 和 字符 但不能包含 因为它们用于字符串和转义 我该如何加入这些角色 反斜杠 字符用于转义具有特殊含义的字符 例如换
  • 违反德米特定律的搜索工具? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 有人知道我可以在 C 应用程序中使用一个工具来查找可能违反德米特法则的情况吗 我知道它会产生很多误报 但我认为它仍然有用 尤其是在早期设计过程中 如果你只是在寻找something
  • 从 Spark-Scala UDF 返回 Seq[Row]

    我正在使用 Spark 和 Scala 来进行一些数据处理 我将 XML 数据映射到数据帧 我将 Row 作为参数传递给 UDF 并尝试将两个复杂类型对象提取为列表 Spark 给我以下错误 线程 main 中的异常 java lang U
  • IBM Cloud Watson Assistant:如何获取工作区的 ID

    我使用 IBM Cloud Watson Assistant 制作了一个聊天机器人 我需要在我的 Android 应用程序中使用它 这是我的config xml code
  • 错误:supportsScrollBehavior 未声明为可配置

    我正在尝试监视一个函数supportsScrollBehavior有角的platform服务如下 import as platform from angular cdk platform describe Supporting Scroll
  • Node JS mysql 数据库断开连接

    我正在使用 Node JS 并尝试连接到 mysql 数据库 由于超时 它不断断开连接 因此我编写了一个函数 以便在超时时重新连接 尽管我需要它成为连续连接 否则我的代码中的引用将不起作用 这是我的相关代码 var mysql requir
  • 为 XmlObject 提供参数 SchemaType

    我有一个像这样的课程 public class CreditCardDocumentImpl extends org apache xmlbeans impl values XmlComplexContentImpl implements
  • React Native KeyboardAvoidingView 无法正常工作

    我正在尝试使用带有行为 padding 的KeyboardAvoidingView 当我尝试在 TextInput 中输入任何文本时 TextInput 字段不会向上移动 我最后添加了一个正在向上移动的小视图 但它上面的视图 我还有带有偏移
  • UITableView 中 2 种不同类型的自定义 UITableViewCells

    在我的 UITableView 中 我想为 rss feed 的第一个新闻设置一个自定义 tableViewCell 可以说是类型 A 并为第二个 第三个等其他新闻设置一个自定义 tableViewCell trype B 问题是自定义 t
  • 如何在 Angular 2 中调用标头组件函数到另一个组件?

    我想打电话showmodel displayType 从另一个组件 如何调用另一个组件的头组件函数 标头 组件 ts import Component Renderer from angular core import Title DOCU
  • VS2008 安装项目:共享(所有用户)应用程序数据文件?

    类人猿同胞 睡莲叶和水轮 我正在使用 VS 2008 在 C NET WPF 中开发 Windows 桌面应用程序 该应用程序需要在 Vista 和 XP 计算机上安装和运行 我正在开发一个安装 Windows 安装程序项目来安装该应用程序
  • 使用 GAC 的优点和缺点是什么?

    除此之外 是否存在必须使用全局程序集缓存或不能使用它的情况 从 GAC 加载程序集意味着更少的开销和安全性 您的应用程序将始终加载正确版本的 NET 库 您不应该生成 GAC 之外的程序集 因为几乎不会获得任何性能提升 在许多情况下甚至会损
  • C# 网格绑定不更新

    我有一个绑定到集合的网格 由于某种我不知道的原因 现在当我在网格中执行某些操作时 网格不会更新 情况 当我单击网格中的按钮时 它会增加同一行中的值 当我单击时 我可以调试并查看值增量 但网格中的值不会改变 BUT当我单击按钮 最小化并恢复窗
  • LINQ to Entities 仅支持无参数构造函数和初始值设定项

    我在这个 linq 表达式中遇到此错误 var naleznosci from nalTmp in db Naleznosci where nalTmp idDziecko idDziec select new Payments nalTm
  • QScopedPointers 的 QList

    我正在尝试将 QScopedPointers 存储在 QList 中 我发现了这个评论 还可以使用 QList gt 库巴 奥伯 2014 年 1 月 14 日 18 17 对此答案的第一条评论 https stackoverflow co
  • 如何使用python将文件以块的形式传输到azure blob存储而不写入文件

    我需要将文件从 google 云存储传输到 azure blob 存储 谷歌提供了一个代码片段来将文件下载到字节变量 如下所示 Get Payload Data req client objects get media bucket buc