Мой код выполняет несколько вызовов https с использованием httplib. Я хочу повторно использовать объект соединения httplib.py, но если я это сделаю, я иногда получаю CannotSendRequest
исключения, потому что соединение заканчивается в странном состоянии, потому что какой-то другой бит кода разрывается в середине запроса. Поэтому мне нужен способ кэширования объекта подключения, чтобы, если он находится в допустимом состоянии, мы использовали его повторно, но повторно подключали, если он не был в допустимом состоянии. Я не вижу общедоступного метода на httplib.HTTPSConnection
, чтобы сказать мне, находится ли соединение в действительном состоянии или нет. И мне нелегко поймать исключение CannotSendRequest, потому что это может произойти во многих местах кода. Так что я хотел бы сделать что-то вроде этого:
CONNECTION_CACHE = None
def get_connection():
global CONNECTION_CACHE
if (not CONNECTION_CACHE) or (CONNECTION_CACHE.__state != httlib._CS_IDLE):
CONNECTION_CACHE = httplib.HTTPSConnection(SERVER)
return CONNECTION_CACHE
, но это не удается, потому что __state
является частным. Есть какой-либо способ сделать это? Я мог бы пропатчить httplib для предоставления метода is_in_valid_state()
, но я бы предпочел не исправлять базовые библиотеки python, если смогу.