mirror of
https://github.com/SpudGunMan/meshing-around.git
synced 2026-08-07 17:32:52 +02:00
logs
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
# Scheduler setup for Mesh Bot
|
||||
import asyncio
|
||||
import schedule
|
||||
from datetime import datetime
|
||||
from modules.log import logger
|
||||
from modules.settings import MOTD
|
||||
from modules.system import send_message
|
||||
@@ -9,8 +10,14 @@ from modules.system import send_message
|
||||
async def run_scheduler_loop(interval=1):
|
||||
logger.debug("System: Scheduler loop started")
|
||||
try:
|
||||
last_logged_minute = -1
|
||||
while True:
|
||||
try:
|
||||
# Log scheduled jobs every 20 minutes
|
||||
now = datetime.now()
|
||||
if now.minute % 20 == 0 and now.minute != last_logged_minute:
|
||||
logger.debug(f"System: Scheduled Tasks {len(schedule.jobs)}, Details:{extract_schedule_fields(schedule.get_jobs())}")
|
||||
last_logged_minute = now.minute
|
||||
schedule.run_pending()
|
||||
except Exception as e:
|
||||
logger.error(f"System: Scheduler loop exception: {e}")
|
||||
@@ -25,6 +32,31 @@ def safe_int(val, default=0, type=""):
|
||||
logger.debug(f"System: Scheduler config {type} error '{val}' to int, using default {default}")
|
||||
return default
|
||||
|
||||
def extract_schedule_fields(jobs):
|
||||
"""
|
||||
Extracts 'Every ... (last run: [...], next run: ...)' from schedule.get_jobs() output without regex.
|
||||
"""
|
||||
jobs_str = str(jobs)
|
||||
results = []
|
||||
# Split by '), ' to separate jobs, then add ')' back except last
|
||||
parts = jobs_str.split('), ')
|
||||
for i, part in enumerate(parts):
|
||||
if not part.endswith(')'):
|
||||
part += ')'
|
||||
# Find the start of 'Every'
|
||||
start = part.find('Every')
|
||||
if start != -1:
|
||||
# Find the start of 'do <lambda>()'
|
||||
do_idx = part.find('do <lambda>()')
|
||||
if do_idx != -1:
|
||||
summary = part[start:do_idx].strip()
|
||||
# Find the (last run: ... next run: ...) part
|
||||
paren_idx = part.find('(', do_idx)
|
||||
if paren_idx != -1:
|
||||
summary += ' ' + part[paren_idx:].strip()
|
||||
results.append(summary)
|
||||
return results
|
||||
|
||||
def setup_scheduler(
|
||||
schedulerMotd, MOTD, schedulerMessage, schedulerChannel, schedulerInterface,
|
||||
schedulerValue, schedulerTime, schedulerInterval):
|
||||
|
||||
+6
-2
@@ -2101,12 +2101,16 @@ async def process_vox_queue():
|
||||
async def watchdog():
|
||||
global localTelemetryData, retry_int1, retry_int2, retry_int3, retry_int4, retry_int5, retry_int6, retry_int7, retry_int8, retry_int9
|
||||
logger.debug("System: Watchdog started")
|
||||
wd_last_logged_minute = -1
|
||||
while True:
|
||||
await asyncio.sleep(20)
|
||||
now = datetime.now()
|
||||
|
||||
# perform memory cleanup every 10 minutes
|
||||
if datetime.now().minute % 10 == 0:
|
||||
|
||||
if now.minute % 20 == 0 and now.minute != wd_last_logged_minute:
|
||||
# perform memory cleanup every 10 minutes
|
||||
cleanup_memory()
|
||||
wd_last_logged_minute = now.minute
|
||||
|
||||
# check all interfaces
|
||||
for i in range(1, 10):
|
||||
|
||||
Reference in New Issue
Block a user