Update /health endpoint to be in local timezone

This commit is contained in:
Matthias 2022-01-28 07:57:43 +01:00
parent e72c3ec19f
commit 15d5389564
6 changed files with 14 additions and 8 deletions

View File

@ -100,7 +100,7 @@ class FreqtradeBot(LoggingMixin):
self._exit_lock = Lock() self._exit_lock = Lock()
LoggingMixin.__init__(self, logger, timeframe_to_seconds(self.strategy.timeframe)) LoggingMixin.__init__(self, logger, timeframe_to_seconds(self.strategy.timeframe))
self.last_process = datetime.utcfromtimestamp(0.0) self.last_process = datetime(1970, 1, 1, tzinfo=timezone.utc)
def notify_status(self, msg: str) -> None: def notify_status(self, msg: str) -> None:
""" """
@ -189,7 +189,7 @@ class FreqtradeBot(LoggingMixin):
self.enter_positions() self.enter_positions()
Trade.commit() Trade.commit()
self.last_process = datetime.utcnow() self.last_process = datetime.now(timezone.utc)
def process_stopped(self) -> None: def process_stopped(self) -> None:
""" """

View File

@ -386,3 +386,4 @@ class SysInfo(BaseModel):
class Health(BaseModel): class Health(BaseModel):
last_process: datetime last_process: datetime
last_process_ts: int

View File

@ -10,6 +10,7 @@ from typing import Any, Dict, List, Optional, Tuple, Union
import arrow import arrow
import psutil import psutil
from dateutil.relativedelta import relativedelta from dateutil.relativedelta import relativedelta
from dateutil.tz import tzlocal
from numpy import NAN, inf, int64, mean from numpy import NAN, inf, int64, mean
from pandas import DataFrame from pandas import DataFrame
@ -1031,7 +1032,10 @@ class RPC:
"ram_pct": psutil.virtual_memory().percent "ram_pct": psutil.virtual_memory().percent
} }
def _health(self) -> Dict[str, str]: def _health(self) -> Dict[str, Union[str, int]]:
last_p = self._freqtrade.last_process
return { return {
'last_process': str(self._freqtrade.last_process) 'last_process': str(last_p),
'last_process_loc': last_p.astimezone(tzlocal()).strftime(DATETIME_PRINT_FORMAT),
'last_process_ts': int(last_p.timestamp()),
} }

View File

@ -1319,8 +1319,7 @@ class Telegram(RPCHandler):
""" """
try: try:
health = self._rpc._health() health = self._rpc._health()
message = f"Last process: `{health['last_process']}`" message = f"Last process: `{health['last_process_loc']}`"
logger.debug(message)
self._send_msg(message) self._send_msg(message)
except RPCException as e: except RPCException as e:
self._send_msg(str(e)) self._send_msg(str(e))

View File

@ -1280,4 +1280,5 @@ def test_rpc_health(mocker, default_conf) -> None:
freqtradebot = get_patched_freqtradebot(mocker, default_conf) freqtradebot = get_patched_freqtradebot(mocker, default_conf)
rpc = RPC(freqtradebot) rpc = RPC(freqtradebot)
result = rpc._health() result = rpc._health()
assert result['last_process'] == '1970-01-01 00:00:00' assert result['last_process'] == '1970-01-01 00:00:00+00:00'
assert result['last_process_ts'] == 0

View File

@ -1451,4 +1451,5 @@ def test_health(botclient):
assert_response(rc) assert_response(rc)
ret = rc.json() ret = rc.json()
assert ret['last_process'] == '1970-01-01T00:00:00' assert ret['last_process_ts'] == 0
assert ret['last_process'] == '1970-01-01T00:00:00+00:00'