Ich versuche, eine große Datei mit 1-2 GB in die Zendo-Sandbox hochzuladen. Ich erhalte beim Absenden meiner Anfrage immer einen EPIPE-Fehler.
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)
Der Fehler, den ich erhalte, ist wie folgt
ConnectionError: ('Connection aborted.', error("(32, 'EPIPE')",))
Liegt das an einer Größenbeschränkung für die Uploads?
Tatsächlich gibt es eine Größenbeschränkung der alten API, die bis zu 100 MB pro Datei unterstützt. Die neue API unterstützt bis zu 50 GB pro Datei und Sie können unter den folgenden Links sehen, wie Sie sie verwenden:
Diese API ist nicht vollständig stabil, daher kann sie sich in Zukunft etwas ändern. Sobald wir eine stabile Version entwickeln, aktualisieren wir die Dokumentation hier: http://developers.zenodo.org/#deposition -files
Lassen Sie es mich wissen, wenn Sie weitere Hilfe benötigen.
Danke für die Antwort @frankois. Ich werde mir die neue API ansehen.
Ich bin etwas verwirrt, wenn ich von den _neuen_ und _alten_ APIs lese: Ich kann sie nicht finden.
Ich habe Zenodo gerade entdeckt und dies ist die einzige Dokumentation, die ich gefunden habe. Aber es sagt nicht, dass es sich auf _new_ oder _old_ API bezieht:
https://developers.zenodo.org
Mir ist also nicht klar, ob sowohl _alte_ als auch _neue_ Versionen gleichzeitig mit unterschiedlichem URL-Zugriff funktionieren ... oder es nur einen API-Zugriff gibt, sodass vorhandene Python-Anwendungen aufgrund von Änderungen und neuen Funktionen möglicherweise nicht mehr funktionieren.
Bitte @frankois könntest du das klären?
Gibt es irgendwo ein veröffentlichtes Änderungsprotokoll , damit wir wissen, wann die einzelnen neuen API-Funktionen veröffentlicht wurden?
Ich meine: Wenn ich irgendwo ein Python-Skript finde, wie kann ich dann (an seinem Datum) erkennen, ob es für die alte oder die neue API geschrieben wurde?
Genauer gesagt habe ich versucht, diese Python-Schnittstelle für die Zenodo-API zu verwenden:https://github.com/SiLeBAT/zenodo-python
Aber, wie ich berichten dort , meine Uploads scheitern , da Dateien im Repository beschädigt werden.
Ich vermute, dass es mit dieser von @frankois erwähnten Änderung in der API zusammenhängen
Könnte bitte ein Experte diese Zeile in ihrem Code überprüfen:
data = {'file': open(file_path, 'rb')}
Und vergleichen Sie mit dem obigen Link von @frankois , wo @slint sagt :
"_Wir übergeben das Dateiobjekt (fp) direkt an die Anforderung als 'Daten' für den Stream-Upload_".
Also, ich denke, die obige Zeile bezog sich auf _alte API_, und sollte sie vielleicht so korrigiert werden?
data = open(file_path, 'rb')
Hilfreichster Kommentar
Tatsächlich gibt es eine Größenbeschränkung der alten API, die bis zu 100 MB pro Datei unterstützt. Die neue API unterstützt bis zu 50 GB pro Datei und Sie können unter den folgenden Links sehen, wie Sie sie verwenden:
Diese API ist nicht vollständig stabil, daher kann sie sich in Zukunft etwas ändern. Sobald wir eine stabile Version entwickeln, aktualisieren wir die Dokumentation hier: http://developers.zenodo.org/#deposition -files
Lassen Sie es mich wissen, wenn Sie weitere Hilfe benötigen.