This commit is contained in:
+12
-12
@@ -194,24 +194,24 @@ def _send_photo_sync(send_photo_url, image_data, caption, chat_id, disable_notif
|
||||
session = requests.Session()
|
||||
|
||||
# Создаем кастомный HTTPAdapter с установкой socket timeout
|
||||
# Используем максимальный timeout для всех операций (connect, read, write)
|
||||
class CustomHTTPAdapter(HTTPAdapter):
|
||||
def init_poolmanager(self, *args, **kwargs):
|
||||
# Устанавливаем socket timeout через socket_options
|
||||
# Это применяется ко всем операциям с сокетом (read и write)
|
||||
socket_options = kwargs.get('socket_options', [])
|
||||
socket_options.append((socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1))
|
||||
kwargs['socket_options'] = socket_options
|
||||
pool = super().init_poolmanager(*args, **kwargs)
|
||||
# Устанавливаем socket timeout для всех соединений в пуле
|
||||
# Это применяется ко всем операциям с сокетом (read и write)
|
||||
original_connect = pool.ConnectionCls.connect
|
||||
def connect_with_timeout(self):
|
||||
result = original_connect(self)
|
||||
if hasattr(self, 'sock') and self.sock:
|
||||
self.sock.settimeout(write_timeout)
|
||||
return result
|
||||
pool.ConnectionCls.connect = connect_with_timeout
|
||||
return pool
|
||||
|
||||
# Устанавливаем timeout для пула соединений
|
||||
# Используем максимальный таймаут для всех операций
|
||||
max_timeout = max(connect_timeout, read_timeout, write_timeout)
|
||||
if 'timeout' not in kwargs:
|
||||
kwargs['timeout'] = Urllib3Timeout(
|
||||
connect=connect_timeout,
|
||||
read=max_timeout
|
||||
)
|
||||
|
||||
return super().init_poolmanager(*args, **kwargs)
|
||||
|
||||
# Монтируем кастомный адаптер
|
||||
adapter = CustomHTTPAdapter(max_retries=Retry(total=0))
|
||||
|
||||
Reference in New Issue
Block a user