feat: форматирование времени ожидания в дни/часы/минуты/секунды
This commit is contained in:
parent
d62fac7718
commit
d1c64a5a2b
@ -156,6 +156,24 @@ class Scheduler:
|
|||||||
self._running = False
|
self._running = False
|
||||||
logger.info("Планировщик остановлен")
|
logger.info("Планировщик остановлен")
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _format_duration(seconds: float) -> str:
|
||||||
|
"""Форматирует секунды в читаемый вид: '1 дн, 8 ч, 57 мин, 50 сек'."""
|
||||||
|
days, remainder = divmod(seconds, 86400)
|
||||||
|
hours, remainder = divmod(remainder, 3600)
|
||||||
|
minutes, secs = divmod(remainder, 60)
|
||||||
|
|
||||||
|
parts = []
|
||||||
|
if days:
|
||||||
|
parts.append(f"{int(days)} дн")
|
||||||
|
if hours:
|
||||||
|
parts.append(f"{int(hours)} ч")
|
||||||
|
if minutes:
|
||||||
|
parts.append(f"{int(minutes)} мин")
|
||||||
|
parts.append(f"{int(secs)} сек")
|
||||||
|
|
||||||
|
return ", ".join(parts)
|
||||||
|
|
||||||
def _calculate_next_run(self, now: datetime) -> datetime:
|
def _calculate_next_run(self, now: datetime) -> datetime:
|
||||||
"""Рассчитать время следующего запуска."""
|
"""Рассчитать время следующего запуска."""
|
||||||
hour, minute = map(int, self.morning_time.split(":"))
|
hour, minute = map(int, self.morning_time.split(":"))
|
||||||
@ -173,10 +191,9 @@ class Scheduler:
|
|||||||
sleep_seconds = (target - now).total_seconds()
|
sleep_seconds = (target - now).total_seconds()
|
||||||
|
|
||||||
logger.info(
|
logger.info(
|
||||||
"Ожидание: target=%s, sleep=%.0f сек (%.0f мин)",
|
"Ожидание: target=%s, sleep=%s",
|
||||||
target.strftime("%Y-%m-%d %H:%M"),
|
target.strftime("%Y-%m-%d %H:%M"),
|
||||||
sleep_seconds,
|
self._format_duration(sleep_seconds),
|
||||||
sleep_seconds / 60,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# Спим до целевого времени
|
# Спим до целевого времени
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user