Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Nein, ich ändere bei meinen Tests auch den cycle Parameter Logik aus der laufenden Logik heraus...
Code:
#!/usr/bin/env python3
# a_testlogic_temp.py
logic.logger.warning("a_testlogic_temp was triggered")
sh.scheduler.change('logics.a_testlogic_temp', cycle={70: None})
logic.logger.warning("cycle value set to 70")
#sh.scheduler.change('logics.a_testlogic_temp', cycle="{80: None}")
#logic.logger.warning("cycle value set to 80")
zwischen den beiden Varianten schalte ich durch Änderung der kommentierten Zeilen hin und her und Sichere+Starte nur die Logik neu.
Für Dich schon, wenn jemand aber nicht (nur) die Zykluszeit setzen will, sondern den Wert mit dem die Logik aufgerufen wird, reicht da noch nicht.
Ich habe einen weiteren Fix gepusht (der Scheduler ist die von mir am meisten gehasst Komponente: Komplex, bei Änderungen fehleranfällig und schlecht dokumentiert. Ich habe zwar schon etwas aufgeräumt, bin aber immer noch nicht am Boden des Schedulers angekommen )
aber anscheinend übernimmt 'logic.cycle' den geänderten cycle nicht sondern zeigt immer den auf der Logik - Parameter manuell eingetragenen Wert. Daher wahrscheinlich auch die "falsche" Admin GUI Angabe.
Das hatte ich oben schon geschrieben. Das Attribut wird nur beim initialisieren der Logik gesetzt. (andere Baustelle)
aber anscheinend übernimmt 'logic.cycle' den geänderten cycle nicht sondern zeigt immer den auf der Logik - Parameter manuell eingetragenen Wert. Daher wahrscheinlich auch die "falsche" Admin GUI Angabe.
Gibts eine Möglichkeit den "aktuellen" Cycle auszulesen?
Ich habe im develop eine neue Version des schedulers gepusht. cheduler.change() akzeptiert für den Parameter cycle jetzt analog zu cheduler.add() die gleichen Werte.
Mit der neuen Version können folgende Varianten angegeben werden:
Code:
# nur Zykluszeit
sh.scheduler.change(<Logik Name>, cycle=60)
# dict mit Zykluszeit und Wert
sh.scheduler.change(<Logik Name>, cycle={60, None})
sh.scheduler.change(<Logik Name>, cycle={60, 'zu setzender Wert'})
# dict mit Zykluszeit und Wert als String kodiert
sh.scheduler.change(<Logik Name>, cycle="{60, None}")
sh.scheduler.change(<Logik Name>, cycle="{60, 'zu setzender Wert'}")
Ich bin mal in den Untiefen des Schedulers verschwunden und habe dabei festgestellt, dass es ein sinnvolles Handling in der scheduler.change Methode nur für cron und active gibt.
Ohne Änderung am Scheduler wird das nichts. Das kann ich aber zeitnah machen, falls Du in der Lage bist dle Datei lib/scheduler.py aus dem Develop Branch in Deine Installation zu kopieren.
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Einen Kommentar schreiben: