[ВОЛК] фикс ConnectionCls
ci/woodpecker/push/woodpecker Pipeline was successful

This commit is contained in:
2026-01-10 18:16:47 +03:00
parent 538213eae9
commit 7608afa77b
+12 -12
View File
@@ -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))