Home › Forum › Nuclos Bedienung › Automatisieren › Frage zum Verhalten der Jobsteuerung
- Dieses Thema hat 3 Antworten und 3 Teilnehmer, und wurde zuletzt aktualisiert vor 10 Jahre, 1 Monat von
Maik Stüker.
-
AutorBeiträge
-
17 April 2013 um 17:19 Uhr #6587
Matthias Haake
TeilnehmerHallo Nuclos-Team.
Wie verhält sich eigentlich die Jobsteuerung, wenn ein Task länger läuft (Laufzeit ist länger als Job-Intervall)?
Wird pro Intervall immer eine neue Instanz der Job-Regel erzeugt und gestartet (egal ob der Job noch läuft)? Das ergäbe dann parallele Jobs. Oder wird der alte „zwangsbeendet“ und ein neuer gestartet? Oder wird gewartet, bis der alte fertig ist?
Hintergrund: Bei bestimmten Aktionen muss viel rückwirkend neu berechnet werden. Da diese Aktionen mehrere Minuten dauern können, kann ich das nicht direkt beim Speichern ausführen (selbst wenn es einen Fortschrittsbalken gäbe, den man ansteuern könnte). Daher setze ich beim Speichern nur ein Flag im Datensatz.
Der Job soll jetzt jede Minute schauen, ob es Daten mit gesetzten Flag gibt und berechnet diese neu. Daher würde ich gern im Voraus wissen, wie Nuclos sich hier verhalten wird – bzw. wie es sich verhalten sollte.
Vielen Dank und Grüße,
Matthias17 April 2013 um 19:53 Uhr #6588Markus Glitzner
TeilnehmerSo weit ich das bis jetzt beobachten konnte, wird der Job bei jedem Intervall ausgeführt, auch wenn dieser gerade läuft. Hatte deswegen öfters Schwierigkeiten, manchmal hing sich dann sogar der ganze Server auf (Nuclos und Datenbank).
Hatte erst kürzlich wieder so ein Problem, da war der Strom weg, folglich keine Internetverbindung und der Job blieb irgendwie hängen und eine Stunde später folgte der nächste Job. Ich konnte danach nicht einmal mehr die Jobliste anzeigen.
Ist aber alles nur eine Vermutung, ich bin der SAche nie nachgegangen.
Du könntest aber ein zweites Flag setzten ‚Job wird ausgeführt‘ und zu Beginn des Jobs gleich setzen.
Gruß
Hugo17 April 2013 um 20:08 Uhr #6589Matthias Haake
TeilnehmerIn einem Test habe ich den Job 1x pro Minute laufen lassen und im Code dann „Thread.Sleep(150000)“ aufgerufen. Die aktuelle 3.12 wartet die 2,5 min bis der Job zu Ende ist und startet direkt im Anschluss eine neue Instanz.
Mich interessiert, ob dieses Verhalten so funktioniert wie von Novabit angedacht. Nicht dass dies in der nächsten Version gefixt wird und meine Rules dann unerwünschtes Verhalten an den Tag legen.
Aktuell lege ich bereits mit einem zweiten Flag fest, dass ein Datensatz bereits berechnet wird und notiere den Zeitstempel der letzten Berechnung. So rutschen die ältesten Datensätze in der Warteschlange nach vorne. Und man kann ggf. die Berechnung abbrechen, wenn bereits ein Task läuft.
Danke für die Schilderung Deiner Erfahrungen, Hugo.
Lieben Gruß,
Matthias22 April 2013 um 10:49 Uhr #6594Maik Stüker
TeilnehmerHallo,
ich habe diesbezüglich ein Ticket eröffnet: NUCLOS-1887
Somit steht das von uns gewünschte Soll-Verhalten fest.
Nach meiner Erkenntnis wird im Normalfall Punkt 1 auch schon erfüllt. Ganz ausschließen kann ich jedoch die Sonderfälle nicht, wie z.B. Manuelle Ausführungen.Weitere Beobachtungen und Fehlverhalten darf gerne im Ticket ergänzt werden 😉
Viele Grüße,
Slash -
AutorBeiträge