NEWS
Trigger auf einen Cron_DP anstatt viele Crons?
-
Mittlerweile hat sich eine stattliche Anzahl von (JSON) Abfragen angehäuft, die alle mit einem Cron (jede Minute) ausgelöst werden. Würde es da Sinn machen einen DP anzulegen, der alle 60 Sekunden aktualisiert wird und dann alle Abfragen auf diese Aktualisierung triggern zu lassen? Bei (übertrieben) 100 Abfragen, wären das 99 weniger Crons, dafür 99x "lauern auf die Aktualisierung" mehr. Gibt es da einen Unterschied zur "Systembelastung", oder spielt das keine Rolle?
-
@abruni sagte in Trigger auf einen Cron_DP anstatt viele Crons?:
Mittlerweile hat sich eine stattliche Anzahl von (JSON) Abfragen angehäuft, die alle mit einem Cron (jede Minute) ausgelöst werden. Würde es da Sinn machen einen DP anzulegen, der alle 60 Sekunden aktualisiert wird und dann alle Abfragen auf diese Aktualisierung triggern zu lassen? Bei (übertrieben) 100 Abfragen, wären das 99 weniger Crons, dafür 99x "lauern auf die Aktualisierung" mehr. Gibt es da einen Unterschied zur "Systembelastung", oder spielt das keine Rolle?
Mir stellt sich die Frage warum du 100 Dinge hast die du regelmässig einmal die Minute tun willst.
Das aussen vor macht es nur sinn wenn du alle deine Aktionen in ein Skript packst was einmal pro Minute läuft. Ob du 1 Cron und 100 normale trigger oder 100 cron Trigger hast macht erst einmal kaum einen Unterscheid.
Aber nochmal, damit das nicht untergeht - wofür brauchst du 100 'Heartbeat' trigger ?
A.
-
@asgothian
OK, dann macht es keinen Unterschied, danke für die Antwort.
Für meine Frage spielt es ja keine Rolle welche Daten ich abrufe, aber um es dennoch zu beantworten: Es sind Abrufe unterschiedlichster Art, viel Positionsdaten aus PiAware und Traccar z.B., aber auch astrologisches.
Nochmals danke. -
@abruni Rufst Du wirklich jedes einzelne JSON per Script manuell ab, so dass Du CRON brauchst? Wenn es JSON sind, die von Adaptern oder so in Datenpunkte in iobroker geschrieben werden, so würde man da eigentlich auf die Änderung oder Aktualisierung des jeweiligen Datenpunktes triggern. So wird auch nur was ausgeführt, wenn es was zu tun gibt und nicht jede Minute 100mal.
Gruss, Jürgen
-
@wildbill
Hi Jürgen,
wo soll der Unterschied sein, ob ich mir etwas abhole, oder ein Adapter macht das? Adapter die funktionieren wie ich mir das vorstelle nutze ich. Flugzeugtracker Adapter, oder bestimmte astrologische Daten gibt es zum Beispiel nicht. Wie aber oben mit "übertrieben" angegeben, sind es auch nicht 100, es sind aber schon ein paar. -
@abruni Der Unterschied ist halt, dass Du jedes der Skripte wohl minütlich ausführst, egal ob sich ein Wert geändert hat oder nicht. "Best practice" wäre eben, dass ein Skript genau von dem Wert getriggert wird, den es verarbeiten soll und ansonsten gar nichts tut.
Wenn Du meinst, es ist resourcenschonender anstatts 10-20 verschiedenen Adaptern 10-20 Skripte minütlich zu starten, die Werte aktiv holen, so kann das durchaus sein. Wobei bei sehr vielen Adaptern ja nicht aktiv gepollt wird sondern per Push Werte genau dann bei ihnen landen, wenn sich was geändert hat.
Wegen mir musst Du nichts ändern, ich wollte nur darauf hinweisen, dass es nicht sonderlich resourcenschonend ist, minütlich zig Skripte zu starten, auch wenn es für sie in dem Moment vielleicht nichts zu tun gibt.Gruss, Jürgen
-
@wildbill
Jürgen,
der Mond kreist um die Erde, Flugzeuge ziehen ihre Bahnen am Himmel, somit wird es nicht vorkommen, dass sich ein Wert nicht geändert hat, wie denn auch? Und wenn mir der Traccar Adapter eine Position gibt, die 2 km von mir entfernt ist, aber wenn ich sie mir abhole eine exakte Position bekomme, na? richtig, dann hole ich sie lieber ab.
Darum ging es aber gar nicht.
Danke nochmal @Asgothian für die Beantwortung meiner Frage. -
@abruni Du hattest oben im Startpost gefragt, was Du tun könntest, um die Systembelastung nicht allzu sehr in die Höhe zu treiben. @Asgothian und ich haben nur versucht, Dir zu zeigen, dass es eventuell einfacher geht und ziemlich sicher resourcenschonender, wenn man auf Änderungen von Datenpunkten triggert anstat pauschal einmal in der Minute alle Skripte einfach auszuführen. Wenn Du natürlich einmal in der Minute jeden dieser Datenpunkte eh "händisch" holen musst, weil sie kein Adapter liefert und sie auch nicht z.B. per MQTT ins System kommen, dann bleibt Dir ja eh nichts anderes, als dafür jedesmal einen CRON zu starten.
Für alles andere gilt aber das geschrieben Optimierungspotential.
Wenn Du aber glücklich mit Deiner Lösung bist, ist doch alles gut.Gruss, Jürgen