Estou tentando fazer upload de um arquivo grande de 1-2 GB na sandbox do Zendo. Sempre recebo um erro EPIPE quando envio minha solicitação.
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)
O erro que recebo é o seguinte
ConnectionError: ('Connection aborted.', error("(32, 'EPIPE')",))
Isso é devido a um limite de tamanho imposto aos uploads?
Na verdade, há um limite de tamanho da API antiga, que suporta até 100 MB por arquivo. A nova API suporta até 50 GB por arquivo e você pode ver como usá-la nos seguintes links:
Esta API não é completamente estável, então pode mudar um pouco no futuro. Assim que desenvolvermos uma versão estável, atualizaremos a documentação aqui: http://developers.zenodo.org/#deposition -files
Avise-me se precisar de mais ajuda.
Obrigado pela resposta @frankois. Vou verificar a nova API.
Fico um pouco confuso quando leio sobre as APIs _novas_ e _antigas_: não consigo encontrá-las.
Acabei de descobrir o Zenodo e esta é a única documentação que encontrei. Mas não diz que se refere a API _nova_ ou _antiga_:
https://developers.zenodo.org
Portanto, não tenho certeza se as versões _antigas_ e _novas_ continuam funcionando ao mesmo tempo, tendo diferentes acessos de url ... ou se há apenas um acesso à API, os aplicativos Python existentes podem parar de funcionar devido a mudanças e novas funcionalidades.
Por favor, @frankois, você poderia esclarecer isso?
Existe um changelog publicado em algum lugar, para que possamos saber quando cada novo recurso da API foi lançado?
Quer dizer: se eu encontrar um script Python em algum lugar, como posso saber (por sua data) se ele foi escrito para a API antiga ou nova?
Mais especificamente, eu estava tentando usar esta interface Python para a API Zenodo:https://github.com/SiLeBAT/zenodo-python
Mas, como relatei lá , meus uploads estão falhando porque os arquivos no repositório foram corrompidos.
Suspeito que isso possa estar relacionado a essa mudança na API mencionada por @frankois .
Algum especialista poderia revisar esta linha em seu código :
data = {'file': open(file_path, 'rb')}
E compare com o link acima fornecido por @frankois , onde @slint diz :
"_Passamos o objeto de arquivo (fp) diretamente para solicitar como 'dados' para upload de fluxo_".
Então, eu acho que a linha acima se refere a _antiga API_, e talvez deva ser corrigida para algo assim?
data = open(file_path, 'rb')
Comentários muito úteis
Na verdade, há um limite de tamanho da API antiga, que suporta até 100 MB por arquivo. A nova API suporta até 50 GB por arquivo e você pode ver como usá-la nos seguintes links:
Esta API não é completamente estável, então pode mudar um pouco no futuro. Assim que desenvolvermos uma versão estável, atualizaremos a documentação aqui: http://developers.zenodo.org/#deposition -files
Avise-me se precisar de mais ajuda.