将问题提交到Mycroft存储库时,请遵循以下准则以帮助我们为您提供帮助。
例如:
例如:
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>>
您是否可以通过输入cli命令:log level debug
来尝试设置日志级别来进行调试,以查看它是否提供了更多信息,而该错误将在此错误之前发生?
当wait_for_response()
或wait_for_message()
尝试删除已经删除的处理程序时,它看起来像是一个错误。 看看我能不能引起它的发生。
天哪,如果我正确阅读了这些屏幕截图,则没有其他信息。 我昨天无法复制,但会尝试更多。
@forslund抱歉:/
这里只是一个想法。 如果用户或某种技能安装了“ mycroft-messagebus-client” pip软件包,则存在pyee版本冲突,因为messagebus-client仍在使用pyee == 5.0.1
https://github.com/MycroftAI/mycroft-messagebus-client/pull/4
我在以--user选项安装系统范围时看到了这一点。 不知道它是否也发生在静脉内。 也许与pyee有关。
如果发生这种情况,我相信(经过测试)由于ExecutorEventEmitter类不可用,因此发生的错误将是ImportErrors。
经过与Ake的更多探测和聊天之后,我认为这可能是MessageBusClient.emitter.once
方法试图将回调函数从已经清除的事件中弹出。
我们仍然需要对此进行验证,如果为true,则可能要确保注册的每个功能都是唯一的。
所以我做了一些测试,每个注册的功能都是唯一的。 我认为这里的问题不是致命的,因为已捕获并报告了异常。
我的测试使我相信问题是超时(这将删除处理程序)与pyee once
自动删除处理程序之间的竞争状态。 这可能是我们需要向上游报告pyee的东西。
我自己亲眼看到了该错误,并添加了一些额外的日志记录以查看是否可以精确定位在mycroft的代码中被触发的位置。 技能过程中的某个地方...
我在上游打开了一个问题。
好了,对我的理论观察的修正已合并到pyee中,并发布为8.1.0。 我将在此处和Adapt上准备PR,以使版本同步,我们将看看是否可以解决问题。 否则还有其他问题:)
最有用的评论
好了,对我的理论观察的修正已合并到pyee中,并发布为8.1.0。 我将在此处和Adapt上准备PR,以使版本同步,我们将看看是否可以解决问题。 否则还有其他问题:)