Add log_on_refresh - using TTL caching to avoid spamming logs
This commit is contained in:
parent
c8ccdbcb9a
commit
7c15375f5d
@ -9,6 +9,8 @@ from abc import ABC, abstractmethod, abstractproperty
|
|||||||
from copy import deepcopy
|
from copy import deepcopy
|
||||||
from typing import Any, Dict, List
|
from typing import Any, Dict, List
|
||||||
|
|
||||||
|
from cachetools import TTLCache, cached
|
||||||
|
|
||||||
from freqtrade.exchange import market_is_active
|
from freqtrade.exchange import market_is_active
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
@ -31,6 +33,9 @@ class IPairList(ABC):
|
|||||||
self._config = config
|
self._config = config
|
||||||
self._pairlistconfig = pairlistconfig
|
self._pairlistconfig = pairlistconfig
|
||||||
self._pairlist_pos = pairlist_pos
|
self._pairlist_pos = pairlist_pos
|
||||||
|
self.refresh_period = self._pairlistconfig.get('refresh_period', 1800)
|
||||||
|
self._last_refresh = 0
|
||||||
|
self._log_cache = TTLCache(maxsize=1024, ttl=self.refresh_period)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def name(self) -> str:
|
def name(self) -> str:
|
||||||
@ -40,6 +45,24 @@ class IPairList(ABC):
|
|||||||
"""
|
"""
|
||||||
return self.__class__.__name__
|
return self.__class__.__name__
|
||||||
|
|
||||||
|
def log_on_refresh(self, logmethod, message: str) -> None:
|
||||||
|
"""
|
||||||
|
Logs message - not more often than "refresh_period" to avoid log spamming
|
||||||
|
Logs the log-message as debug as well to simplify debugging.
|
||||||
|
:param logmethod: Function that'll be called. Most likely `logger.info`.
|
||||||
|
:param message: String containing the message to be sent to the function.
|
||||||
|
:return: None.
|
||||||
|
"""
|
||||||
|
|
||||||
|
@cached(cache=self._log_cache)
|
||||||
|
def _log_on_refresh(logmethod, message: str):
|
||||||
|
logmethod(message)
|
||||||
|
|
||||||
|
# Log as debug first
|
||||||
|
logger.debug(message)
|
||||||
|
# Call hidden function.
|
||||||
|
_log_on_refresh(logmethod, message)
|
||||||
|
|
||||||
@abstractproperty
|
@abstractproperty
|
||||||
def needstickers(self) -> bool:
|
def needstickers(self) -> bool:
|
||||||
"""
|
"""
|
||||||
|
Loading…
Reference in New Issue
Block a user