Mycroft-core: error pyee | devolución de llamada de excepción para<future at="" state="finished" raised="" keyerror=""/>

Creado en 16 sept. 2020  ·  10Comentarios  ·  Fuente: MycroftAI/mycroft-core

Cómo enviar un problema a un repositorio de Mycroft

Cuando envíe un problema a un repositorio de Mycroft, siga estas pautas para ayudarnos a ayudarlo.

Sea claro sobre el software, el hardware y la versión que está ejecutando

Por ejemplo:

  • Estoy ejecutando Picroft
  • Con la última versión
  • Con el estándar Wake Word

Intente proporcionar pasos que podamos utilizar para replicar el problema

Por ejemplo:

  1. Abra mycroft cli
  2. espera (viene cada 30 segundos aproximadamente)

Proporcione archivos de registro u otra salida para ayudarnos a ver el error

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

Comentario más útil

Ok, una solución a mi observación teórica se fusionó en pyee y se lanzó como 8.1.0. Prepararé un PR aquí y en Adapt para sincronizar las versiones y veremos si eso resuelve el problema. De lo contrario, también hay otro problema :)

Todos 10 comentarios

¿Podría intentar configurar el nivel de registro para depurar ingresando el comando cli :log level debug para ver si proporciona más información sobre lo que intenta hacer antes del error?

Parece que se muestra un error cuando wait_for_response() o wait_for_message() intenta eliminar un controlador que ya se eliminó. Veré si puedo provocar que suceda.

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

Maldita sea, no hay información adicional si estoy leyendo esas capturas de pantalla correctamente. Ayer no pude reproducirlo, pero intentaré más.

@forslund lo siento: /

Solo una idea aquí. Si el usuario o alguna habilidad instala el paquete pip "mycroft-messagebus-client", hay un conflicto de versión pyee ya que messagebus-client todavía está usando pyee == 5.0.1

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

Veo eso al instalar en todo el sistema como opción de usuario. No estoy seguro si también ocurre dentro de un venv. Quizás esté relacionado ya que se trata de pyee.

Si eso sucede, creo (después de la prueba) que los errores que ocurren serían ImportErrors ya que la clase ExecutorEventEmitter no está disponible.

Después de investigar un poco más y charlar con Ake, creo que este podría ser el método MessageBusClient.emitter.once que intenta eliminar la función de devolución de llamada de un evento que ya se ha borrado.

Todavía necesitamos verificar esto y, si es cierto, quizás asegurarnos de que cada función registrada sea única.

Así que hice algunas pruebas y cada función registrada es única. Creo que el problema aquí no es fatal, ya que la excepción se detecta y se informa.

Mis pruebas me hacen creer que el problema es una condición de carrera entre el tiempo de espera (que elimina el controlador) y la eliminación automática pyee once del controlador. Esto puede ser algo que debamos informar a pyee en sentido ascendente ...

Yo mismo vi el error al azar y agregué un registro adicional para ver si puedo identificar en qué parte del código de mycroft se activa. En algún lugar del proceso de habilidades ...

Abrí un problema aguas arriba.

Ok, una solución a mi observación teórica se fusionó en pyee y se lanzó como 8.1.0. Prepararé un PR aquí y en Adapt para sincronizar las versiones y veremos si eso resuelve el problema. De lo contrario, también hay otro problema :)

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

beemorris picture beemorris  ·  6Comentarios

KathyReid picture KathyReid  ·  8Comentarios

Zacki84 picture Zacki84  ·  10Comentarios

ryanleesipes picture ryanleesipes  ·  4Comentarios

ChanceNCounter picture ChanceNCounter  ·  8Comentarios