From 763e05ff14f995dbc903140ac713d414caa4087f Mon Sep 17 00:00:00 2001 From: gcarq Date: Fri, 19 May 2017 18:02:18 +0200 Subject: [PATCH] better exception handling and minor changes --- main.py | 9 ++++++--- rpc/telegram.py | 15 ++++++++------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/main.py b/main.py index b9318938d..140c16138 100755 --- a/main.py +++ b/main.py @@ -6,6 +6,8 @@ import threading import time import traceback from datetime import datetime +from json import JSONDecodeError +from requests import ConnectionError from wrapt import synchronized @@ -22,7 +24,7 @@ from utils import get_conf __author__ = "gcarq" __copyright__ = "gcarq 2017" __license__ = "GPLv3" -__version__ = "0.6.0" +__version__ = "0.6.1" conf = get_conf() @@ -61,8 +63,9 @@ class TradeThread(threading.Thread): while not _should_stop: try: self._process() - except ValueError: - logger.exception('ValueError') + except (ConnectionError, JSONDecodeError, ValueError) as e: + msg = 'Got {} during _process()'.format(e.__class__.__name__) + logger.exception(msg) finally: Session.flush() time.sleep(25) diff --git a/rpc/telegram.py b/rpc/telegram.py index d0d916db7..dd8b31038 100644 --- a/rpc/telegram.py +++ b/rpc/telegram.py @@ -2,7 +2,7 @@ import logging from datetime import timedelta import arrow -from telegram.error import NetworkError +from telegram.error import NetworkError, BadRequest from telegram.ext import CommandHandler, Updater from telegram import ParseMode, Bot, Update from wrapt import synchronized @@ -111,10 +111,10 @@ class TelegramHandler(object): durations_hours = [(t.close_date - t.open_date).total_seconds() / 3600.0 for t in trades] avg_duration = sum(durations_hours) / float(len(durations_hours)) markdown_msg = """ -*Total Profit:* `{profit_btc} BTC ({profit}%)` +*ROI:* `{profit_btc} BTC ({profit}%)` *Trade Count:* `{trade_count}` -*First Action:* `{first_trade_date}` -*Latest Action:* `{latest_trade_date}` +*First Trade completed:* `{first_trade_date}` +*Latest Trade completed:* `{latest_trade_date}` *Avg. Stake Amount:* `{avg_open_amount} BTC` *Avg. Duration:* `{avg_duration}` """.format( @@ -228,19 +228,20 @@ class TelegramHandler(object): .format([h.command for h in handles])) @staticmethod - def send_msg(msg, bot=None): + def send_msg(msg, bot=None, parse_mode=ParseMode.MARKDOWN): """ Send given markdown message :param msg: message :param bot: alternative bot + :param parse_mode: telegram parse mode :return: None """ if conf['telegram'].get('enabled', False): bot = bot or TelegramHandler.get_updater(conf).bot try: - bot.send_message(conf['telegram']['chat_id'], msg, parse_mode=ParseMode.MARKDOWN) + bot.send_message(conf['telegram']['chat_id'], msg, parse_mode=parse_mode) except NetworkError as e: logger.warning('Got Telegram NetworkError: {}! trying one more time'.format(e.message)) - bot.send_message(conf['telegram']['chat_id'], msg, parse_mode=ParseMode.MARKDOWN) + bot.send_message(conf['telegram']['chat_id'], msg, parse_mode=parse_mode) except Exception: logger.exception('Exception occurred within Telegram API')