Я пытаюсь загрузить в песочницу Zendo большой файл размером 1-2 ГБ. Когда я отправляю свой запрос, я получаю сообщение об ошибке 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')",))
Это связано с ограничением размера загружаемых файлов?
Действительно, старый API ограничивает размер, который поддерживает до 100 МБ на файл. Новый API поддерживает до 50 ГБ на файл, и вы можете увидеть, как его использовать, по следующим ссылкам:
Этот API не является полностью стабильным, поэтому он может немного измениться в будущем. Как только мы разработаем стабильную версию, мы обновим документацию здесь: http://developers.zenodo.org/#deposition -files
Дайте мне знать, если вам понадобится дополнительная помощь.
Спасибо за ответ @frankois. Я проверю новый API.
Я немного сбит с толку, когда прочитал о _new_ и _old_ API: я не могу их найти.
Я только что открыл для себя Zenodo, и это единственная найденная мной документация. Но здесь не говорится, что это относится к _new_ или _old_ API:
https://developers.zenodo.org
Поэтому мне не ясно, продолжают ли обе версии _old_ и _new_ работать одновременно, имея разные URL-адреса ... или есть только один доступ к API, поэтому существующие приложения python могут перестать работать из-за изменений и новых функций.
Пожалуйста, @frankois, не могли бы вы это прояснить?
Есть ли где-нибудь опубликованный журнал изменений , чтобы мы могли знать, когда была выпущена каждая новая функция API?
Я имею в виду: если я где-то найду сценарий Python, как я могу определить (по его дате), был ли он написан для старого или нового API?
В частности, я пытался использовать этот интерфейс Python для Zenodo API:https://github.com/SiLeBAT/zenodo-python
Но, как я там сообщил, мои загрузки не выполняются из-за повреждения файлов в репозитории.
Я подозреваю, что это может быть связано с этим изменением в API, упомянутым @frankois .
Не могли бы некоторые эксперты просмотреть эту строку в своем коде :
data = {'file': open(file_path, 'rb')}
И сравните со ссылкой выше, предоставленной @frankois , где @slint говорит :
«_Мы передаем объект файла (fp) напрямую в запрос как« данные »для загрузки потока_».
Итак, я полагаю, что строка выше относится к _old API_, и, возможно, ее следует исправить на что-то вроде этого?
data = open(file_path, 'rb')
Самый полезный комментарий
Действительно, старый API ограничивает размер, который поддерживает до 100 МБ на файл. Новый API поддерживает до 50 ГБ на файл, и вы можете увидеть, как его использовать, по следующим ссылкам:
Этот API не является полностью стабильным, поэтому он может немного измениться в будущем. Как только мы разработаем стабильную версию, мы обновим документацию здесь: http://developers.zenodo.org/#deposition -files
Дайте мне знать, если вам понадобится дополнительная помощь.