все Python 3http.clientисключение
http.client.IncompleteRead
исключения
Тело ответа оборвалось раньше, чем обещал Content-Length или chunked-кодирование. Полученная часть лежит в атрибуте partial.
Синтаксис
except http.client.IncompleteRead as e: e.partial, e.expected
Обычно значит, что сервер или прокси оборвал соединение посреди ответа. Данные не потеряны полностью: e.partial — уже прочитанные байты, e.expected — сколько не хватило. Повторять запрос безопасно только для идемпотентных методов (GET, HEAD), а не для POST. В отличие от RemoteDisconnected, заголовки уже были получены — оборвалось именно тело.
Примеры
import http.client
import socket
server, client = socket.socketpair()
server.sendall(b'HTTP/1.1 200 OK\r\nContent-Length: 10\r\n\r\nabc')
server.close()
resp = http.client.HTTPResponse(client)
resp.begin()
try:
resp.read()
except http.client.IncompleteRead as e:
print(e) # → IncompleteRead(3 bytes read, 7 more expected)
print(e.partial, e.expected) # → b'abc' 7
client.close()
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности