无需在 Google Cloud 中下载即可读取非常大的 blob(流式传输?)

6 python stream prefetch google-cloud-platform

请帮忙!

[+] 我有什么: 每个桶里都有很多斑点。Blob 的大小各不相同,从小于千字节到大量千兆字节。

[+] 我想做的事情: 我需要能够在这些 blob 中传输数据(比如大小为 1024 的缓冲区或类似的东西),或者在 Python 中按一定大小的块读取它们。关键是我不认为我可以只执行bucket.get_blob(),因为如果blob是TeraByte那么我将无法将它保存在物理内存中。

[+] 我真正想做的事情: 解析 blob 内的信息以识别关键字

[+] 我读过的内容: 很多关于如何分块写入谷歌云,然后使用 compose 将其拼接在一起的文档(一点帮助都没有)

很多关于java的预取函数的文档(需要是python)

谷歌云API

如果有人能指出我正确的方向,我将非常感激!谢谢

小智 4

因此,我发现这样做的一种方法是在 python 中创建一个类文件对象,然后使用 Google-Cloud API 调用 .download_to_file() 来处理该类文件对象。

这本质上是流数据。python代码看起来像这样

def getStream(blob):
    stream = open('myStream','wb', os.O_NONBLOCK)
    streaming = blob.download_to_file(stream)
Run Code Online (Sandbox Code Playgroud)

os.O_NONBLOCK 标志使我可以在写入文件时进行读取。我还没有用真正的大文件测试过这个,所以如果有人知道更好的实现或者看到这个潜在的失败,请发表评论。谢谢!