Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 4, 2013 19:03:40

severum
От:
Зарегистрирован: 2008-01-06
Сообщения: 54
Репутация: +  0  -
Профиль   Отправить e-mail  

Пересылка файлов

Обычно пользуюсь модулем request.
Удобно манипулировать post/get, json, headers = {'Content-type': ‘application/json’, ‘Accept’: ‘text/plain’}, status_code и т.д.
Можно отправлять файлы files = {'datafile': (filename, open(file, ‘rb’))}

Но сейчас требуется отправлять и получать довольно большие файлы. И иметь возможность следить за процессом. Хотя бы считать сколько процентов переслалось.
(Наверное было бы совсем хорошо как докачивать и собирать статистику по ошибкам, но пока не обязательно)

Для получения файла пока попробовал (работает) через urllib.urlretrieve() с reporthook

В request такого нет или я недочитал?
Хочется как-то единообразно все сделать.
Посоветуйте что-нибудь.

Заранее спасибо.



Офлайн

#2 Авг. 5, 2013 17:13:53

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Пересылка файлов

severum
И иметь возможность следить за процессом.
http://www.python-requests.org/en/latest/api.html#requests.Response.iter_content
severum
Наверное было бы совсем хорошо как докачивать
Докачка - это через заголовок Range
headers = {'Range': 'bytes=%s-%s' % (start, end)}
resp = requests.get(url, stream=True, headers=headers)
for chunk in resp.iter_content(1024):
    ...
Только нужно проверять, поддерживается ли докачка:
download_resuming_supported = 'bytes' in r.headers.get('Accept-Ranges', '')
severum
собирать статистику по ошибкам
http://www.python-requests.org/en/latest/user/quickstart/#errors-and-exceptions

У requests хорошая документация. Странно, что не нашли.

Офлайн

#3 Авг. 5, 2013 17:51:22

severum
От:
Зарегистрирован: 2008-01-06
Сообщения: 54
Репутация: +  0  -
Профиль   Отправить e-mail  

Пересылка файлов

Спасибо большое.
Как-то просмотрел.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version