Files
Brancheneinstufung2/connector-superoffice/kill_jobs.py
Floke e8c751e987 [31e88f42] Erreicht: Die Stabilität des SuperOffice Connectors wurde maßgeblich verbessert, um Endlos-Schleifen bei der Job-Verarbeitung zu verhindern und die Dashboard-Anzeige zu optimieren. Die Verarbeitung relevanter Änderungen wurde präzisiert.
Erreicht: Die Stabilität des SuperOffice Connectors wurde maßgeblich verbessert, um Endlos-Schleifen bei der Job-Verarbeitung zu verhindern und die Dashboard-Anzeige zu optimieren. Die Verarbeitung relevanter Änderungen wurde präzisiert.
Details der Implementierung:
 * Stabile Job-Verarbeitung (Poison Pill): Ein Poison Pill-Mechanismus wurde in queue_manager.py eingeführt. Jobs werden nun nach maximal 5 fehlgeschlagenen Versuchen automatisch als FAILED markiert.
 * Robuste SuperOffice API-Client-Authentifizierung: Die Fehlerbehandlung im superoffice_client.py wurde gehärtet. Authentifizierungsfehler und andere kritische API-Probleme lösen jetzt spezifische Exceptions aus.
 * Behebung des Worker-Startfehlers: Ein ImportError (ContactNotFoundException) im Worker wurde behoben.
 * Präzise Trigger-Logik: Eine Neubewertung von Accounts wird jetzt nur noch bei Änderungen an den Feldern name, urladdress, urls oder dem Vertical-UDF (SuperOffice:83) ausgelöst.
 * Korrekte Datumsanzeige im Dashboard: Die Dashboard-Formatierungslogik wurde angepasst, um updated_at-Zeitstempel anzuzeigen.
2026-03-09 12:38:08 +00:00

32 lines
824 B
Python

import sqlite3
import sys
DB_PATH = "/data/connector_queue.db"
def kill_pending_jobs():
"""Sets the status of stuck jobs to FAILED."""
try:
conn = sqlite3.connect(DB_PATH)
cursor = conn.cursor()
query = """
UPDATE jobs
SET status = 'FAILED', error_msg = 'Manually failed by admin to clear queue.'
WHERE status = 'PROCESSING' OR status = 'PENDING'
"""
cursor.execute(query)
changes = conn.total_changes
conn.commit()
conn.close()
print(f"OK: Successfully marked {changes} jobs as FAILED.")
return 0
except sqlite3.Error as e:
print(f"ERROR: Could not update jobs. Reason: {e}")
return 1
if __name__ == "__main__":
sys.exit(kill_pending_jobs())