Hallo Forum,
ich möchte über BlockingCall einige Funktionen auslagern.
Leider funktioniert schon das Beispiel nicht.
Immer wenn ich z.B. { TestBlocking(3) } aufrufe kommt in der Weboberfläche: HASH(0x5595a28e7c80)
Im log File sind alle Einträge entstanden.
Hat Jemand eine Idee was ich überprüfen kann?
Danke
Kersten
Beispiel:
sub TestBlocking($){ BlockingCall("DoSleep", shift, "SleepDone", 5, "AbortFn", "AbortArg"); }
sub DoSleep($) { sleep(shift); return "I'm done"; }
sub SleepDone($) { Log 1, "SleepDone: " . shift; }
sub AbortFn($) { Log 1, "Aborted: " . shift; }
Welche Logausgaben stehen denn im Logfile von FHEM?
ZitatLeider funktioniert schon das Beispiel nicht.
[...]
Im log File sind alle Einträge entstanden.
Klingt fuer mich nach Widerspruch.
ZitatImmer wenn ich z.B. { TestBlocking(3) } aufrufe kommt in der Weboberfläche: HASH(0x5595a28e7c80)
Bei mir auch. BlockingCall liefert ein Hash zurueck.
Ist der Betreff absichtlich als Clickbait formuliert, damit der Maintainer schneller springt?
Die Frage ist ja was er mit alle Ausgaben meint. Zu mindest die Abort dürfte nicht drin stehen wenn alles klappt.
Eine etwas genauere Fehlerangabe und was der User genau erwartet hätte und was dann kam wäre nicht schlecht.
Bei meinem Test steht Folgendes im Log:
Zitat2020.02.17 16:01:36 1: SleepDone: I'm done
2020.02.17 16:01:51 1: Timeout for DoSleep reached, terminated process 96050
2020.02.17 16:01:51 1: Aborted: AbortArg
Die erste Zeile bei { TestBlocking(3) }, die letzten beiden bei { TestBlocking(7) }.
Zitat von: rudolfkoenig am 17 Februar 2020, 16:28:40
Bei meinem Test steht Folgendes im Log:Die erste Zeile bei { TestBlocking(3) }, die letzten beiden bei { TestBlocking(7) }.
Macht Sinn! Der BlockingCall selber soll ja nur 5s warten :)
Hast mich überzeugt ;D