Merge pull request #2535 from freqtrade/fix/quitting
Fix non-terminating bot
This commit is contained in:
commit
8e087cb639
@ -27,7 +27,6 @@ def main(sysargv: List[str] = None) -> None:
|
||||
"""
|
||||
|
||||
return_code: Any = 1
|
||||
worker = None
|
||||
try:
|
||||
arguments = Arguments(sysargv)
|
||||
args = arguments.get_parsed_arg()
|
||||
@ -57,8 +56,6 @@ def main(sysargv: List[str] = None) -> None:
|
||||
except Exception:
|
||||
logger.exception('Fatal exception!')
|
||||
finally:
|
||||
if worker:
|
||||
worker.exit()
|
||||
sys.exit(return_code)
|
||||
|
||||
|
||||
|
@ -45,8 +45,16 @@ def start_trading(args: Dict[str, Any]) -> int:
|
||||
"""
|
||||
from freqtrade.worker import Worker
|
||||
# Load and run worker
|
||||
worker = None
|
||||
try:
|
||||
worker = Worker(args)
|
||||
worker.run()
|
||||
except KeyboardInterrupt:
|
||||
logger.info('SIGINT received, aborting ...')
|
||||
finally:
|
||||
if worker:
|
||||
logger.info("worker found ... calling exit")
|
||||
worker.exit()
|
||||
return 0
|
||||
|
||||
|
||||
|
@ -8,7 +8,8 @@ from freqtrade import OperationalException
|
||||
from freqtrade.state import RunMode
|
||||
from freqtrade.utils import (setup_utils_configuration, start_create_userdir,
|
||||
start_download_data, start_list_exchanges,
|
||||
start_list_markets, start_list_timeframes)
|
||||
start_list_markets, start_list_timeframes,
|
||||
start_trading)
|
||||
from tests.conftest import get_args, log_has, patch_exchange
|
||||
|
||||
|
||||
@ -24,6 +25,29 @@ def test_setup_utils_configuration():
|
||||
assert config['exchange']['secret'] == ''
|
||||
|
||||
|
||||
def test_start_trading_fail(mocker):
|
||||
|
||||
mocker.patch("freqtrade.worker.Worker.run", MagicMock(side_effect=OperationalException))
|
||||
|
||||
mocker.patch("freqtrade.worker.Worker.__init__", MagicMock(return_value=None))
|
||||
|
||||
exitmock = mocker.patch("freqtrade.worker.Worker.exit", MagicMock())
|
||||
args = [
|
||||
'trade',
|
||||
'-c', 'config.json.example'
|
||||
]
|
||||
with pytest.raises(OperationalException):
|
||||
start_trading(get_args(args))
|
||||
assert exitmock.call_count == 1
|
||||
|
||||
exitmock.reset_mock()
|
||||
|
||||
mocker.patch("freqtrade.worker.Worker.__init__", MagicMock(side_effect=OperationalException))
|
||||
with pytest.raises(OperationalException):
|
||||
start_trading(get_args(args))
|
||||
assert exitmock.call_count == 0
|
||||
|
||||
|
||||
def test_list_exchanges(capsys):
|
||||
|
||||
args = [
|
||||
|
Loading…
Reference in New Issue
Block a user