Ao enviar um problema para um repositório Mycroft, siga estas diretrizes para nos ajudar a ajudá-lo.
Por exemplo:
Por exemplo:
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>>
Você poderia tentar definir o nível de log para depuração digitando o comando cli :log level debug
para ver se ele fornece mais informações sobre o que ele tenta fazer antes do erro?
Parece um erro mostrado quando wait_for_response()
ou wait_for_message()
tenta remover um manipulador que já foi removido. Vou ver se consigo provocar isso.
Droga, nenhuma informação adicional se estou lendo as imagens corretamente. Não consegui reproduzir ontem, mas vou tentar mais alguns.
@forslund, desculpe: /
Apenas uma ideia aqui. Se o usuário ou alguma habilidade instalar o pacote pip "mycroft-messagebus-client", haverá um conflito de versão pyee, pois o messagebus-client ainda está usando pyee == 5.0.1
https://github.com/MycroftAI/mycroft-messagebus-client/pull/4
Estou vendo isso ao instalar em todo o sistema como opção --user. Não tenho certeza se também ocorre dentro de um venv. Talvez esteja relacionado, pois é sobre xixi.
Se isso acontecer, acredito (após o teste) que os erros ocorridos seriam ImportErrors, pois a classe ExecutorEventEmitter não está disponível.
Depois de mais sondar e conversar com Ake, acho que esse pode ser o método MessageBusClient.emitter.once
tentando retirar a função de retorno de chamada de um evento que já foi apagado.
Ainda precisamos verificar isso e, se for verdade, talvez garantir que cada função registrada seja única.
Então fiz alguns testes e cada função registrada é única. Acho que o problema aqui não é fatal, pois a exceção é detectada e relatada.
Meus testes me fazem acreditar que o problema é uma condição de corrida entre o tempo limite (que remove o manipulador) e a remoção automática pyee once
do manipulador. Isso pode ser algo que precisamos relatar upstream para pyee ...
Eu mesmo vi o erro aleatoriamente e adicionei alguns registros extras para ver se posso identificar onde no código de mycroft ele é acionado. Em algum lugar no processo de habilidades ...
Eu abri um problema a montante.
Ok, uma correção para minha observação teórica foi mesclada no pyee e lançada como 8.1.0. Vou preparar um PR aqui e no Adapt para sincronizar as versões e veremos se isso resolve o problema. Caso contrário, há algum outro problema também :)
Comentários muito úteis
Ok, uma correção para minha observação teórica foi mesclada no pyee e lançada como 8.1.0. Vou preparar um PR aqui e no Adapt para sincronizar as versões e veremos se isso resolve o problema. Caso contrário, há algum outro problema também :)