From f762f12bd286fb2ac6a05f46c413f4b9419a4b4a Mon Sep 17 00:00:00 2001 From: Richie Cahill Date: Mon, 9 Mar 2026 11:35:08 -0400 Subject: [PATCH] added max retry and retry back off to run_loop --- python/signal_bot/main.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/python/signal_bot/main.py b/python/signal_bot/main.py index 3bc7d04..5ecc7ab 100644 --- a/python/signal_bot/main.py +++ b/python/signal_bot/main.py @@ -126,15 +126,24 @@ def run_loop( inventory_path = Path(config.inventory_file) logger.info("Bot started — listening via WebSocket") - while True: + retries = 0 + delay = config.reconnect_delay + + while retries < config.max_retries: try: for message in signal.listen(): logger.info(f"Message from {message.source}: {message.message[:80]}") registry.record_contact(message.source, "") - dispatch(message, signal, llm, registry, inventory_path) + dispatch(message, signal, llm, registry, inventory_path, config) + retries = 0 + delay = config.reconnect_delay except Exception: - logger.exception(f"WebSocket error, reconnecting in {RECONNECT_DELAY}s") - time.sleep(RECONNECT_DELAY) + retries += 1 + logger.exception(f"WebSocket error ({retries}/{config.max_retries}), reconnecting in {delay}s") + time.sleep(delay) + delay = min(delay * 2, config.max_reconnect_delay) + + logger.critical("Max retries exceeded, shutting down") def main(