wie kann ich feststellen, ob ein Scheduled Task noch aktiv ist? D.h. in Zukunft wieder ausgeführt wird.
In Shopware 5 gab es zwei Möglichkeiten, wie ein Eintrag in s_crontab als „inaktiv“ wahrgenommen wird: entweder active=0, oder active=1 UND end=null. Das konnte ich so im Code sehen.
Wie sieht es bei Shopware 6 aus? Ich habe zwar schon etwas geschaut, aber keine genaue Definition gefunden, wie ein Tabellen-Eintrag für einen aktiven Scheduled Task auszusehen hat.
du kannst dir dazu die Tabelle scheduled_task anschauen und die letzte Ausführung mit dem Intervall vergleichen. Noch einfacher du installierst dir die Tools | Shopware Store, die implementiert dafür eine grafische Oberfläche in der Admin und zeigt den Status.
Im Standard werden die Scheduled Task über den sogenannten Admin Worker ausgeführt, sprich nur wenn jemand im Admin angemeldet ist. Grundsätzlich empfiehlt sich dies auf sogenannte CLI Worker, siehe Shopware 6 - Tutorials und FAQ - Message Queue und Scheduled Tasks
vielen Dank für deine Antwort. Mit Intervall und Datum der letzten Ausführung zu rechnen ist eine super Idee; daran habe ich gar nicht gedacht. Danke auch für den Tipp bzgl. Tools Plugin. CLI Worker ist bei uns schon eingerichtet.
Eine Frage hätte ich noch, um einen Scheduled Task wieder ausführen zu lassen. Müsste ich dazu status auf „scheduled“ setzen? Oder sonst noch etwas?
(Wir haben einen Linux Cronjob laufen, der bei Shopware 5 in die Tabelle schaut, eine E-Mail verschickt falls bestimmte Tasks nicht laufen, und versucht diese auch wieder zu aktivieren. Natürlich macht das nicht immer Sinn, aber über die E-Mail wissen wir auch ob ein Task aus der Überwachung herausgenommen werden muss. Nur kann eben sein, dass ein Task mal temporär/einmalig fehlschlägt.)
Was ist den jetzt der Status? Im Prinzip gibt es hier zwei Status: scheduled: eingeplant für die nächste Ausführung queued: In die Message Queue zur Abarbeitung eingereiht
Darum kümmert sich Shopware 6 selbst, fehlgeschlagene Aufgaben landen in der Tabelle dead_messages und werden in regelmäßigen Abständen versucht ernet durchzuführen.
Wenn ich das also richtig verstehe, würde für eine Benachrichtigung über gescheiterte Tasks reichen, dass ich in die dead_message Tabelle schaue?
Oder kann es passieren, dass auch Dead Messages irgendwann nicht mehr ausgeführt werden? Z.B. nach einer bestimmten Anzahl Versuchen.
Ich werde das auf jeden Fall ausführlicher testen müssen (mit bewusst fehlschlagenden Tasks), weil bei uns die Scheduled Tasks mit systemkritischen Aufgaben verbunden sind.