Improve timeout resilience for Telegram and n8n integrations.
Add configurable Telethon retry/connect settings, enable retry-on-fail for external n8n nodes, and document recovery steps for Telegram and workflow activation timeouts. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
38
script.py
38
script.py
@@ -13,6 +13,12 @@ N8N_WEBHOOK_URL = os.getenv("N8N_WEBHOOK_URL", "http://n8n:5678/webhook/tg-inbox
|
||||
HISTORY_CHECK_FILE = os.getenv("HISTORY_CHECK_FILE", "/app/session/history_done.flag")
|
||||
SESSION_FILE_PATH = os.getenv("SESSION_FILE_PATH", "/app/session/session.session")
|
||||
SESSION_STRING = os.getenv("TG_SESSION_STRING", "")
|
||||
TG_USE_IPV6 = os.getenv("TG_USE_IPV6", "false").lower() in {"1", "true", "yes"}
|
||||
TG_CONNECT_TIMEOUT = int(os.getenv("TG_CONNECT_TIMEOUT", "20"))
|
||||
TG_REQUEST_RETRIES = int(os.getenv("TG_REQUEST_RETRIES", "10"))
|
||||
TG_CONNECTION_RETRIES = int(os.getenv("TG_CONNECTION_RETRIES", "20"))
|
||||
TG_RETRY_DELAY = int(os.getenv("TG_RETRY_DELAY", "5"))
|
||||
TG_RECONNECT_WAIT = int(os.getenv("TG_RECONNECT_WAIT", "15"))
|
||||
|
||||
|
||||
def load_session_string() -> str:
|
||||
@@ -39,7 +45,17 @@ def validate_config() -> None:
|
||||
|
||||
|
||||
validate_config()
|
||||
client = TelegramClient(StringSession(load_session_string()), API_ID, API_HASH)
|
||||
client = TelegramClient(
|
||||
StringSession(load_session_string()),
|
||||
API_ID,
|
||||
API_HASH,
|
||||
use_ipv6=TG_USE_IPV6,
|
||||
timeout=TG_CONNECT_TIMEOUT,
|
||||
request_retries=TG_REQUEST_RETRIES,
|
||||
connection_retries=TG_CONNECTION_RETRIES,
|
||||
retry_delay=TG_RETRY_DELAY,
|
||||
auto_reconnect=True,
|
||||
)
|
||||
|
||||
def build_author(sender) -> dict:
|
||||
if not sender:
|
||||
@@ -130,7 +146,25 @@ async def handler(event):
|
||||
await send_to_n8n(event.message)
|
||||
|
||||
async def main():
|
||||
await client.start()
|
||||
print(
|
||||
"Connecting to Telegram with settings:",
|
||||
{
|
||||
"use_ipv6": TG_USE_IPV6,
|
||||
"connect_timeout": TG_CONNECT_TIMEOUT,
|
||||
"request_retries": TG_REQUEST_RETRIES,
|
||||
"connection_retries": TG_CONNECTION_RETRIES,
|
||||
"retry_delay": TG_RETRY_DELAY,
|
||||
},
|
||||
)
|
||||
|
||||
while True:
|
||||
try:
|
||||
await client.start()
|
||||
break
|
||||
except Exception as e:
|
||||
print(f"Telegram connect failed: {e}. Retrying in {TG_RECONNECT_WAIT}s...")
|
||||
await asyncio.sleep(TG_RECONNECT_WAIT)
|
||||
|
||||
print("UserBot started...")
|
||||
|
||||
if not os.path.exists(HISTORY_CHECK_FILE):
|
||||
|
||||
Reference in New Issue
Block a user