Mycroft-core: pyee error | Ausnahme Rückruf für<future at="" state="finished" raised="" keyerror=""/>

Erstellt am 16. Sept. 2020  ·  10Kommentare  ·  Quelle: MycroftAI/mycroft-core

So senden Sie ein Problem an ein Mycroft-Repository

Befolgen Sie beim Senden eines Problems an ein Mycroft-Repository die folgenden Richtlinien, damit wir Ihnen helfen können.

Machen Sie sich klar, welche Software, Hardware und Version Sie ausführen

Beispielsweise:

  • Ich verwende Picroft
  • Mit der neuesten Version
  • Mit dem Standard Wake Word

Versuchen Sie, Schritte bereitzustellen, mit denen wir das Problem replizieren können

Beispielsweise:

  1. Öffnen Sie mycroft cli
  2. Warten Sie (es kommt alle ca. 30 Sekunden)

Stellen Sie Protokolldateien oder andere Ausgaben bereit, damit wir den Fehler erkennen können

20:00:14.407 | ERROR | 949 | concurrent.futures | exception calling callback for <Future at 0x737d7b10 state=finished raised KeyError>Traceback (most recent call last): File "/usr/lib/python3.7/concurrent/futures/_base.py", line 324, in _invoke_callbacks callback(self) File "/home/pi/mycroft-core/.venv/lib/python3.7/site-packages/pyee/_executor.py", line 60, in _callback self.emit('error', exc) File "/home/pi/mycroft-core/.venv/lib/python3.7/site-packages/pyee/_base.py", line 111, in emit self._emit_handle_potential_error(event, args[0] if args else None) File "/home/pi/mycroft-core/.venv/lib/python3.7/site-packages/pyee/_base.py", line 83, in _emit_handle_potential_error raise error File "/usr/lib/python3.7/concurrent/futures/thread.py", line 57, in run result = self.fn(*self.args, **self.kwargs) File "/home/pi/mycroft-core/.venv/lib/python3.7/site-packages/pyee/_base.py", line 121, in g self.remove_listener(event, f) File "/home/pi/mycroft-core/.venv/lib/python3.7/site-packages/pyee/_base.py", line 136, in remove_listener self._events[event].pop(f)KeyError: <bound method MessageWaiter._handler of <mycroft.messagebus.client.client.MessageWaiter object at 0xb2e8fd90>> 20:00:14.408 | ERROR | 949 | concurrent.futures | exception calling callback for <Future at 0x737d79d0 state=finished raised KeyError>Traceback (most recent call last): File "/usr/lib/python3.7/concurrent/futures/_base.py", line 324, in _invoke_callbacks callback(self) File "/home/pi/mycroft-core/.venv/lib/python3.7/site-packages/pyee/_executor.py", line 60, in _callback self.emit('error', exc) File "/home/pi/mycroft-core/.venv/lib/python3.7/site-packages/pyee/_base.py", line 111, in emit self._emit_handle_potential_error(event, args[0] if args else None) File "/home/pi/mycroft-core/.venv/lib/python3.7/site-packages/pyee/_base.py", line 83, in _emit_handle_potential_error raise error File "/usr/lib/python3.7/concurrent/futures/thread.py", line 57, in run result = self.fn(*self.args, **self.kwargs) File "/home/pi/mycroft-core/.venv/lib/python3.7/site-packages/pyee/_base.py", line 121, in g self.remove_listener(event, f) File "/home/pi/mycroft-core/.venv/lib/python3.7/site-packages/pyee/_base.py", line 136, in remove_listener self._events[event].pop(f)KeyError: <bound method MessageWaiter._handler of <mycroft.messagebus.client.client.MessageWaiter object at 0x7514b7b0>>

image

hard Bug - complex help wanted

Hilfreichster Kommentar

Ok, ein Fix für meine theoretische Beobachtung wurde in pyee zusammengeführt und als 8.1.0 veröffentlicht. Ich werde hier und auf Adapt eine PR vorbereiten, um die Versionen zu synchronisieren, und wir werden sehen, ob das Problem dadurch behoben wird. Ansonsten gibt es noch ein anderes Problem :)

Alle 10 Kommentare

Könnten Sie versuchen, die Protokollebene auf Debug einzustellen, indem Sie den cli-Befehl :log level debug eingeben, um zu sehen, ob weitere Informationen darüber angezeigt werden, was vor dem Fehler dort richtig gemacht werden soll?

Es sieht aus wie ein Fehler, der angezeigt wird, wenn wait_for_response() oder wait_for_message() versucht, einen bereits entfernten Handler zu entfernen. Mal sehen, ob ich es provozieren kann.

Screen Capture_deepin-terminal_20200917141521
Screen Capture_deepin-terminal_20200917141536
Screen Capture_deepin-terminal_20200917141604

Verdammt, keine zusätzlichen Informationen, wenn ich diese Screenshots richtig lese. Ich konnte es gestern nicht reproduzieren, werde es aber noch einmal versuchen.

@forslund sorry: /

Nur eine Idee hier. Wenn der Benutzer oder eine Fertigkeit das Pip-Paket "mycroft-messagebus-client" installiert, liegt ein Pyee-Versionskonflikt vor, da der messagebus-Client weiterhin pyee == 5.0.1 verwendet

https://github.com/MycroftAI/mycroft-messagebus-client/pull/4

Ich sehe das bei der systemweiten Installation als --user Option. Ich bin mir nicht sicher, ob es auch in einem Venv vorkommt. Vielleicht ist es verwandt, wie es um Pyee geht.

In diesem Fall glaube ich (nach dem Testen), dass die auftretenden Fehler ImportErrors sind, da die ExecutorEventEmitter-Klasse nicht verfügbar ist.

Nach einigen weiteren Untersuchungen und Chats mit Ake könnte dies die MessageBusClient.emitter.once -Methode sein, die versucht, die Rückruffunktion von einem bereits gelöschten Ereignis zu entfernen.

Wir müssen dies noch überprüfen und, falls dies zutrifft, sicherstellen, dass jede registrierte Funktion eindeutig ist.

Also habe ich einige Tests durchgeführt und jede registrierte Funktion ist einzigartig. Ich denke, das Problem hier ist nicht tödlich, da die Ausnahme abgefangen und gemeldet wird.

Meine Tests lassen mich glauben, dass das Problem eine Racebedingung zwischen dem Timeout (das den Handler entfernt) und dem automatischen Entfernen des Handlers durch pyee once . Dies kann etwas sein, das wir vorab an pyee melden müssen ...

Ich habe den Fehler selbst zufällig gesehen und zusätzliche Protokollierung hinzugefügt, um festzustellen, wo im Code von mycroft er ausgelöst wird. Irgendwo im Skills-Prozess ...

Ich habe ein Problem vorgelagert.

Ok, ein Fix für meine theoretische Beobachtung wurde in pyee zusammengeführt und als 8.1.0 veröffentlicht. Ich werde hier und auf Adapt eine PR vorbereiten, um die Versionen zu synchronisieren, und wir werden sehen, ob das Problem dadurch behoben wird. Ansonsten gibt es noch ein anderes Problem :)

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen