问题标签 [libcloud]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
96 浏览

python - 使用 Apache Libcloud 上传到 GCS 时,对象元数据键是小写的

我正在使用 Apache Libcloud 将文件与对象元数据一起上传到 Google Cloud Storage 存储桶。

在此过程中,我的元数据字典中的键被小写。我不确定这是由于 Cloud Storage 还是发生在 Libcloud 中。

可以按照Libcloud 文档中的示例重现该问题:

文件成功上传,但生成的元数据将如下所示: 结果

哪里camelCase变成了camelcase

我不认为 GCS 不允许对象元数据使用驼峰式,因为在这个意义上可以手动编辑元数据: 在此处输入图像描述

我浏览了 Libcloud 的源代码,但没有看到任何明确的小写字母。任何关于如何使用 libcloud 上传驼峰元数据的指示都非常受欢迎。

0 投票
0 回答
205 浏览

http-headers - Google Storage HEAD 响应缺少内容长度

我正在使用一个库(Apache Libcloud)向谷歌存储发出请求。在库内部,向在 google 存储中查询的 URL 发出 HEAD 请求。你可以在这里找到它的代码,搜索def get_object。重要的线是

根据HEAD 响应对象的 Google 文档content-length字段应该是响应的一部分:

但是,某些文件(但不是所有文件)缺少它。在这两种情况下我都收到了一个x-goog-stored-content-length条目,但图书馆需要content-length.

content-length头在调用链的下游使用了一点def _headers_to_object,由于缺少标头,我只是得到一个 KeyError :

问题是:当我上传文件以导致谷歌存储不发送该标题时,我可能对文件做了什么?或者这是谷歌存储中的一个错误(我怀疑)?

更多信息:

  • 内容类型是application/json
  • 这个文件是 gzip 编码的。
  • 它适用于其他 gzip 编码文件
  • 我正在使用 Apache Libcloud API 3.3.0
  • 我认为这不是 libcloud 中的错误,因为 HEAD 的文档指定了content-length标头,但是如果我覆盖_headers_to_object使用x-goog-stored-content-length.
  • 我无法使用我目前可以公开以演示的文件来重现此内容
0 投票
0 回答
105 浏览

python - Libcloud Storage - 如何指定请求超时?

我使用Libcloud 3.3.1 python 库从 Openstack swift 提供程序下载对象。

使用 requests 包时,可以指定连接和读取超时,以避免在检索文件时卡住。

是否可以在 Libcloud 包中定义此类超时?我知道我可以在连接参数中设置一个超时,但这似乎并没有达到我想要的效果(这是一个重试超时)。

我也一直在考虑使用信号包和这个回复,但这又不是我想要的,我想避免做这样的事情。

0 投票
0 回答
12 浏览

libcloud - 有没有办法在 libcloud 中非递归地列出存储桶中的所有对象

我有一个可能指向 s3 或任何其他存储服务的基本容器 - 我正在尝试列出某个文件夹中的对象 - 但我找不到非递归的方法 - 我能做的就是将前缀和 ex_prefix (已弃用)传递给它,但不传递后缀/分隔符/深度 - 它总是会列出所有子对象的对象。

有没有办法给它传递一个后缀/分隔符/深度?

0 投票
1 回答
46 浏览

python - Apache-libcloud 为 Azure Blob 存储引发 403

我有一个 celery 任务,它使用 apache libcloud 将数据从一个 azure 容器复制到另一个容器。

任务工作正常,但一段时间后我收到 403 错误。(例如任务复制 50 个文件,然后突然引发 403)

可能是什么问题呢?