我正在尝试将一个 1-2GB 的大文件上传到 Zendo 沙箱。 提交请求时,我不断收到 EPIPE 错误。
data = {"filename":'test.tar'}
files ={'file' : ("test.tar",open('test.tar','rb'),{'Expires': '0'})}
r = requests.post('https://sandbox.zenodo.org/api/deposit/depositions/274851/files',
params={'access_token': ACCESS_TOKEN},files=files,data=data)
我得到的错误如下
ConnectionError: ('Connection aborted.', error("(32, 'EPIPE')",))
这是由于上传的大小限制造成的吗?
谢谢@frankois 的回复。 我会检查新的 API。
当我读到 _new_ 和 _old_ API 时,我有点困惑:我找不到它们。
我刚刚发现了 Zenodo,这是我找到的唯一文档。 但它并没有说它指的是 _new_ 或 _old_ API:
https://developers.zenodo.org
所以我不清楚 _old_ 和 _new_ 版本是否同时保持工作,具有不同的 url 访问权限……或者只有一个 API 访问权限,因此现有的 python 应用程序可能会由于更改和新功能而停止工作。
请@frankois你能澄清一下吗?
某处是否有已发布的变更日志,以便我们知道每个新 API 功能的发布时间?
我的意思是:如果我在某处找到一个 python 脚本,我怎么知道(通过它的日期)它是为旧 API 还是新 API 编写的?
更具体地说,我试图将这个Python 接口用于 Zenodo API:https://github.com/SiLeBAT/zenodo-python
但是,正如我在那里报告的那样,我的上传失败了,因为存储库中的文件已损坏。
我怀疑这可能与@frankois提到的 API 中的这一变化有关。
可以请一些专家在他们的代码中审查
data = {'file': open(file_path, 'rb')}
并与@frankois提供的@slint说:
“_我们直接通过文件对象(fp)来请求作为流上传的‘数据’_”。
所以,我猜上面那行是指 _old API_,也许应该更正为这样的?
data = open(file_path, 'rb')
最有用的评论
事实上,旧 API 有一个大小限制,每个文件最多支持 100MB。 新 API 最多支持每个文件 50GB,您可以在以下链接中查看如何使用它:
这个 API 不是完全稳定的,所以它在未来可能会发生一些变化。 一旦我们开发出稳定版本,我们将在此处更新文档: http :
如果您需要进一步的帮助,请告诉我。