Fix TaskBeat: add live stuck-task watchdog (auto-reset in_progress > 5min every beat cycle)

This commit is contained in:
eric 2026-02-23 11:39:02 +00:00
parent 0be80c5ee1
commit ad7c1bdddc

20
app.py
View file

@ -2269,6 +2269,26 @@ def process_beat_tasks():
while True: while True:
try: try:
# Stuck-Task-Watchdog: in_progress Tasks älter als 5 min zurücksetzen
try:
con = sqlite3.connect(EMAIL_JOURNAL_DB)
stuck = con.execute(
"SELECT id, title FROM tasks WHERE status='in_progress' "
"AND datetime(created_at) < datetime('now', '-5 minutes')"
).fetchall()
if stuck:
ids = [r[0] for r in stuck]
con.execute(
f"UPDATE tasks SET status='pending' WHERE id IN ({','.join('?'*len(ids))})",
ids
)
con.commit()
for r in stuck:
logger.warning("[TaskBeat] Stuck Task #%d zurückgesetzt: %s", r[0], r[1][:60])
con.close()
except Exception as e:
logger.error("[TaskBeat] Watchdog-Fehler: %s", str(e))
# Lade pending Tasks aus Datenbank # Lade pending Tasks aus Datenbank
db_tasks = get_tasks(status='pending') db_tasks = get_tasks(status='pending')
# Konvertiere zu Dict-Format für Legacy-Kompatibilität # Konvertiere zu Dict-Format für Legacy-Kompatibilität