当我使用google-cloud-storage
Python客户端下载Google云存储blob时,如何获取它的头文件(特别是content-length
、etag
、content-type
和last-modified
)?你知道吗
具体来说,我的代码如下所示:
client = Client()
bucket = client.get_bucket('my-bucket')
blob = bucket.blob('my-blob')
with open('some-file', 'w') as f:
blob.download_to_file(f)
我想在下载blob时发送头(content-length
,etag
,等等)。你知道吗
请注意:
blob.size
(和朋友)需要调用blob.reload()
,这会发出一个HTTP请求(下载blob后不会自动填充它们;请参阅注释)requests.get(blob.generate_signed_url())
(或类似的)意味着我不能利用Client
的连接池那么,在不发出任何额外的HTTP请求的情况下,有没有办法在使用google-cloud-storage
库从云存储下载文件时获取头文件?你知道吗
通过Python客户机或任何其他客户机都不可能在一个请求中同时检索对象数据和对象元数据。你知道吗
如果我们查看Google云存储(GCS)公开的API,就会发现检索对象内容的API记录在Objects-gt;Gethere下。这描述了对以下对象的调用:
如果我们查看此请求可用的参数,就会发现一个名为
alt
的参数,它有两个选项:json
(默认)media
在文件末尾,还有进一步的评论:
仔细阅读这篇文章,似乎可以检索元数据或内容。。。但不是两者都有。由于restapi是构建所有其他库所依据的底层API,如果没有底层restapi来在单个请求中检索内容和元数据,那么就没有更高级别的API来实现这一点。你知道吗
如前所述,Python库不允许同时设置头和主体。你知道吗
这是因为
reload
function从api_request
获取响应对象。你知道吗但是,函数
download_to_file
、download_to_filename
和download_as_string
使用另一个直接写入IO缓冲区的function_do_download
。不返回响应对象。你知道吗后面的函数使用您提到的
Client
池,但它没有设置为更新blob对象属性。你知道吗相关问题 更多 >
编程相关推荐