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.
32 lines
824 B
Python
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())
|