Wartet PRESENCE shell auf die Rückgabe, oder läuft die Abfrage im Hintergrund ?

Begonnen von Markus_F, 01 Juni 2022, 07:23:42

Vorheriges Thema - Nächstes Thema

Markus_F

Hallo Team,
wir ist bewusst, dass fhem ein single thread Prozess ist ... bin mir nicht sicher wie PRESENCE implementiert ist:
Wenn ich ein shell Script definiert hat, wartet dann fhem solange (an der Stelle) bis sich das Script beendet ?
Sprich, wenn das Script länger brauch, würde dann fhem an der Stelle "hängen" ?
Vielen Dank.

Beta-User

Ausweislich der commandref wird der Rückgabewert des scripts verwendet:
ZitatThe shell must return 0 (absent) or 1 (present) on console (STDOUT). Any other values will be treated as an error
Wie soll das anders gehen wie mit einer blockierenden Methode?
(Klar, man könnte das insgesamt anders mit einer asynchronen Logik lösen, aber so ist es nicht implementiert).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

justme1968

presence verwendet für alle varianten nicht blockierende aufrufe und blockiert fhem nicht.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Beta-User

Zitat von: justme1968 am 01 Juni 2022, 09:36:18
presence verwendet für alle varianten nicht blockierende aufrufe und blockiert fhem nicht.
Danke für die Klarstellung, stimmt natürlich!

Das Problem dabei ist allerdings, dass die ganzen PRESENCE-Funktionsaufrufe (nicht nur für shellscripts) mit BlockingCall gelöst sind, also - je nach Zahl der PRESENCE-Instanzen - uU. eine ganze Anzahl an forks zusammenkommt (was ein "beliebtes" Bausteinchen für Speicherprobleme ist).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors