Я пытаюсь загрузить файл с помощью PUT с помощью модуля запросов в python.Python просит метод PUT создает файл с нулевым байтом
мой код это:
with open(file, 'rb') as payload:
r = requests.put(url, data=payload, auth=('username', 'password'))
Файл создается, я получаю ответ 200, но он имеет 0 байт. Если я не ошибаюсь, я подозреваю, что встретил ошибку here.
В этом случае? Если да, есть ли способ обхода, который я могу попробовать?
Я пробовал также то же самое с библиотекой httplib2
with open(file, 'rb') as payload:
h = httplib2.Http(".cache")
h.add_credentials('user', 'pass')
resp, content = h.request(url, "PUT", body=payload)
Но запрос остается висеть навсегда (опять файл 0 размера создается). Не может ли быть такая же проблема с модулем запросов?
[EDIT] Дополнительная информация.
Служба, получающая PUT, работает на гипервизоре ESXi. У него есть функция, где, если вы делаете запрос с выключенным PUT, он сохраняет файл запроса в/tmp. Сервер работает (протестировал его с помощью скрипта perl, который выполняет ту же работу, а также с завихрением).
Загруженный файл представляет собой файл .tgz, который находится на моей локальной файловой системе, а url - в виде "http://esx-server/tmp/file.tgz"
.
Какие услуги получает этот PUT? Где создается файл? –
Пожалуйста, выберите [mcve]. – davidism
Попробуйте изменить 'data' на' files' и передать '{'file': payload}'. –