Python 3.5+http.clientисключение
http.client.RemoteDisconnected
исключения
Сервер закрыл соединение, не прислав ни байта ответа. Наследует и ConnectionResetError, и BadStatusLine. Появилось в Python 3.5.
Синтаксис
except http.client.RemoteDisconnected: reconnect and retry
Классический случай — keep-alive: соединение простояло, сервер тихо его закрыл, и следующий запрос по нему натыкается на пустоту. Правильная реакция — переоткрыть соединение и повторить запрос, если метод идемпотентный. Благодаря двойному наследованию её ловят и except OSError, и except http.client.HTTPException. Если обрыв случился посреди тела, будет IncompleteRead, а не это исключение.
Примеры
import http.client
import socket
server, client = socket.socketpair()
server.sendall(b'')
server.close()
resp = http.client.HTTPResponse(client)
try:
resp.begin()
except ConnectionResetError as e:
print(type(e).__name__, '-', e) # → RemoteDisconnected - Remote end closed connection without response
print(isinstance(e, http.client.BadStatusLine)) # → True
client.close()
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности