Merge pull request #9665 from freqtrade/no-db-context
Add No db context to protect certain functions that run in a backtest-like modepull/9668/head
commit
cd81897c84
@ -0,0 +1,33 @@
|
||||
|
||||
from freqtrade.persistence.pairlock_middleware import PairLocks
|
||||
from freqtrade.persistence.trade_model import Trade
|
||||
|
||||
|
||||
def disable_database_use(timeframe: str) -> None:
|
||||
"""
|
||||
Disable database usage for PairLocks and Trade models.
|
||||
Used for backtesting, and some other utility commands.
|
||||
"""
|
||||
PairLocks.use_db = False
|
||||
PairLocks.timeframe = timeframe
|
||||
Trade.use_db = False
|
||||
|
||||
|
||||
def enable_database_use() -> None:
|
||||
"""
|
||||
Cleanup function to restore database usage.
|
||||
"""
|
||||
PairLocks.use_db = True
|
||||
PairLocks.timeframe = ''
|
||||
Trade.use_db = True
|
||||
|
||||
|
||||
class FtNoDBContext:
|
||||
def __init__(self, timeframe: str = ''):
|
||||
self.timeframe = timeframe
|
||||
|
||||
def __enter__(self):
|
||||
disable_database_use(self.timeframe)
|
||||
|
||||
def __exit__(self, exc_type, exc_val, exc_tb):
|
||||
enable_database_use()
|
||||
@ -0,0 +1,24 @@
|
||||
import pytest
|
||||
|
||||
from freqtrade.persistence import FtNoDBContext, PairLocks, Trade
|
||||
|
||||
|
||||
@pytest.mark.parametrize('timeframe', ['', '5m', '1d'])
|
||||
def test_FtNoDBContext(timeframe):
|
||||
PairLocks.timeframe = ''
|
||||
assert Trade.use_db is True
|
||||
assert PairLocks.use_db is True
|
||||
assert PairLocks.timeframe == ''
|
||||
|
||||
with FtNoDBContext(timeframe):
|
||||
assert Trade.use_db is False
|
||||
assert PairLocks.use_db is False
|
||||
assert PairLocks.timeframe == timeframe
|
||||
|
||||
with FtNoDBContext():
|
||||
assert Trade.use_db is False
|
||||
assert PairLocks.use_db is False
|
||||
assert PairLocks.timeframe == ''
|
||||
|
||||
assert Trade.use_db is True
|
||||
assert PairLocks.use_db is True
|
||||
Loading…
Reference in new issue