Il mio obiettivo è fare un PUT di parte di un file utilizzando le richieste e lo streaming del file (ad esempio, non caricarlo in memoria e quindi eseguire il PUT).richieste - come eseguire il caricamento in streaming - file parziale
This page spiega come si dovrebbe farlo per un intero file:
Richieste supporta il caricamento in streaming, che consentono di inviare grandi stream o file senza leggerli nella memoria. Per eseguire lo streaming e caricati, è sufficiente fornire un oggetto simile a file per il vostro corpo:
with open('massive-body', 'rb') as f:
requests.post('http://some.url/streamed', data=f)
Tuttavia nel mio caso voglio inviare un solo pezzo del file. C'è un modo per realizzare questo?
Nel concetto, qualcosa di simile a:
with open('massive-body', 'rb') as f:
requests.post('http://some.url/streamed', data=f.read(chunksize))
hmm, si potrebbe probabilmente scrivere un generatore che finge di essere un oggetto simile a un file che leggerà un blocco dietro le quinte, può essere difficile anche se non sono sicuro di quali richieste di chiamata fanno su un file, ma sembra possibile se nessuno ha trovato una soluzione migliore – user3012759
@ user3012759: Ho provato a cercare ciò che Richieste richiede in un oggetto simile a file, senza risultato. Tuttavia, si noti che accetta un generatore semplice per [Chunk-Encoded Requests] (http://docs.python-requests.org/en/latest/user/advanced/#chunk-encoded-requests) –
Immagino che tu possa sperimentare utilizzando una classe di tipo file di base che ha metodi 'read' e' close', e se ciò non funziona, continua ad aggiungere metodi alla tua classe fino a quando le richieste smettono di lamentarsi. :) –