diff --git a/main.py b/main.py index 81f16607a..bef1753a0 100755 --- a/main.py +++ b/main.py @@ -27,27 +27,15 @@ CONFIG = get_conf() api_wrapper = get_exchange_api(CONFIG) -@synchronized -def get_instance(recreate=False): - """ - Get the current instance of this thread. This is a singleton. - :param recreate: Must be True if you want to start the instance - :return: TradeThread instance - """ - global _instance, _should_stop - if recreate and not _instance.is_alive(): - logger.debug('Creating TradeThread instance') - _should_stop = False - _instance = TradeThread() - return _instance - - -def stop_instance(): - global _should_stop - _should_stop = True - - class TradeThread(threading.Thread): + def __init__(self): + super().__init__() + self._should_stop = False + + def stop(self): + """ stops the trader thread """ + self._should_stop = True + def run(self): """ Threaded main function @@ -56,7 +44,7 @@ class TradeThread(threading.Thread): try: TelegramHandler.send_msg('*Status:* `trader started`') logger.info('Trader started') - while not _should_stop: + while not self._should_stop: try: self._process() except (ConnectionError, JSONDecodeError, ValueError) as error: @@ -113,7 +101,20 @@ class TradeThread(threading.Thread): # Initial stopped TradeThread instance _instance = TradeThread() -_should_stop = False + +@synchronized +def get_instance(recreate=False): + """ + Get the current instance of this thread. This is a singleton. + :param recreate: Must be True if you want to start the instance + :return: TradeThread instance + """ + global _instance + if recreate and not _instance.is_alive(): + logger.debug('Creating TradeThread instance') + _should_stop = False + _instance = TradeThread() + return _instance def close_trade_if_fulfilled(trade): diff --git a/requirements.txt b/requirements.txt index a15c0f3f2..934380d1c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,14 +1,14 @@ -e git+https://github.com/s4w3d0ff/python-poloniex.git#egg=Poloniex -e git+https://github.com/ericsomdahl/python-bittrex.git#egg=python-bittrex -SQLAlchemy==1.1.9 +SQLAlchemy==1.1.13 python-telegram-bot==7.0.1 arrow==0.10.0 requests==2.18.4 urllib3==1.22 -wrapt==1.10.10 -pandas==0.20.1 -matplotlib==2.0.0 -PYQT5==5.8 -scikit-learn==0.18.1 -scipy==0.18.1 +wrapt==1.10.11 +pandas==0.20.3 +matplotlib==2.0.2 +PYQT5==5.9 +scikit-learn==0.19.0 +scipy==0.19.1 stockstats==0.2.0 \ No newline at end of file diff --git a/rpc/telegram.py b/rpc/telegram.py index 815ff7c37..5ae680c2e 100644 --- a/rpc/telegram.py +++ b/rpc/telegram.py @@ -174,10 +174,10 @@ class TelegramHandler(object): :param update: message update :return: None """ - from main import get_instance, stop_instance + from main import get_instance if get_instance().is_alive(): TelegramHandler.send_msg('`Stopping trader ...`', bot=bot) - stop_instance() + get_instance().stop() else: TelegramHandler.send_msg('*Status:* `already stopped`', bot=bot)