Python Glossary English

все 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Сообщить о неточности