From 2c9ebf139f71fe55461a419a8fca472e804e2556 Mon Sep 17 00:00:00 2001 From: vvzvlad Date: Tue, 10 Jun 2025 03:58:33 +0300 Subject: [PATCH] refactor connection_handler in TelegramClient: increase wait time to 5 seconds before restart, implement process termination and forking for more reliable restarts --- telegram_client.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/telegram_client.py b/telegram_client.py index 5d8c1a9..e9b7e11 100644 --- a/telegram_client.py +++ b/telegram_client.py @@ -83,10 +83,19 @@ class TelegramClient: # Добавляем задержку, чтобы предыдущий процесс успел завершиться # и освободить порт и другие ресурсы logger.info("connection_handler: waiting for resources to be freed before restart") - time.sleep(3) + time.sleep(5) # Увеличиваем до 5 секунд - # Use os.execv to restart the process with the same arguments - os.execv(sys.executable, [sys.executable] + sys.argv) + # Принудительно завершаем текущий процесс для освобождения порта + logger.info("connection_handler: killing current process before restart") + pid = os.getpid() + # Используем fork и exec для более надежного перезапуска + if os.fork() > 0: + # Родительский процесс + sys.exit(0) + else: + # Дочерний процесс + time.sleep(1) # Даем родителю умереть + os.execv(sys.executable, [sys.executable] + sys.argv) except Exception as e: logger.error(f"connection_handler: error during restart: {str(e)}") # Emergency termination in case of restart failure