Moim celem jest wykonanie części pliku za pomocą żądań i przesłanie pliku (tj. Nie załadowanie go do pamięci, a następnie wykonanie PUT).wnioski - jak przesyłać strumieniowo - częściowy plik
This page wyjaśnia, w jaki sposób to zrobić dla całego pliku:
Wnioski obsługuje strumieniowe przesyłanie, które pozwalają na wysyłanie dużych plików lub strumieni bez czytania ich w pamięci. Aby strumieniowo przesyłać i , wystarczy dostarczyć przedmiot plikopodobny dla ciała:
with open('massive-body', 'rb') as f:
requests.post('http://some.url/streamed', data=f)
Jednak w moim przypadku chcę wysłać tylko jeden fragment pliku. Czy istnieje sposób, aby to osiągnąć?
W koncepcji, coś jak:
with open('massive-body', 'rb') as f:
requests.post('http://some.url/streamed', data=f.read(chunksize))
hmm, mógłbyś prawdopodobnie napisać generator, który udawałby obiekt podobny do pliku, który odczyta fragment za kulisami, może być trudny, ponieważ nie jestem pewien, co wywołuje żądanie w pliku, ale wydaje się możliwy, jeśli nie ma lepszego rozwiązania – user3012759
@ user3012759: Próbowałem wyszukać to, czego wymaga żądanie w obiekcie podobnym do pliku, bezskutecznie. Należy jednak pamiętać, że akceptuje prosty generator dla [zgłoszeń zakodowanych] (http://docs.python-requests.org/en/latest/user/advanced/#chunk-encoded-requests). –
Myślę, że możesz eksperymentować używając podstawowej klasy podobnej do pliku, która ma metody "czytaj" i "zamknij", a jeśli to nie zadziała, dodawaj metody do swojej klasy, dopóki Żądania przestaną narzekać. :) –