From 0c01b23cba8564642a2f07ec8a5a817d486821b8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 20 Sep 2022 18:09:14 +0200 Subject: [PATCH] Capture exceptions in send_msg calls --- freqtrade/rpc/rpc_manager.py | 2 ++ tests/rpc/test_rpc_manager.py | 15 +++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/freqtrade/rpc/rpc_manager.py b/freqtrade/rpc/rpc_manager.py index 3b60077ad..8390e61aa 100644 --- a/freqtrade/rpc/rpc_manager.py +++ b/freqtrade/rpc/rpc_manager.py @@ -78,6 +78,8 @@ class RPCManager: mod.send_msg(msg) except NotImplementedError: logger.error(f"Message type '{msg['type']}' not implemented by handler {mod.name}.") + except Exception: + logger.exception('Exception occurred within RPC module %s', mod.name) def process_msg_queue(self, queue: deque) -> None: """ diff --git a/tests/rpc/test_rpc_manager.py b/tests/rpc/test_rpc_manager.py index b9ae16a20..d71f38259 100644 --- a/tests/rpc/test_rpc_manager.py +++ b/tests/rpc/test_rpc_manager.py @@ -82,6 +82,21 @@ def test_send_msg_telegram_disabled(mocker, default_conf, caplog) -> None: assert telegram_mock.call_count == 0 +def test_send_msg_telegram_error(mocker, default_conf, caplog) -> None: + mocker.patch('freqtrade.rpc.telegram.Telegram._init', MagicMock()) + mocker.patch('freqtrade.rpc.telegram.Telegram.send_msg', side_effect=ValueError()) + + freqtradebot = get_patched_freqtradebot(mocker, default_conf) + rpc_manager = RPCManager(freqtradebot) + rpc_manager.send_msg({ + 'type': RPCMessageType.STATUS, + 'status': 'test' + }) + + assert log_has("Sending rpc message: {'type': status, 'status': 'test'}", caplog) + assert log_has("Exception occurred within RPC module telegram", caplog) + + def test_process_msg_queue(mocker, default_conf, caplog) -> None: telegram_mock = mocker.patch('freqtrade.rpc.telegram.Telegram.send_msg') mocker.patch('freqtrade.rpc.telegram.Telegram._init')