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パッケージをインストールする場合、messagebus-clientがまだpyee == 5.0.1を使用しているため、pyeeバージョンの競合が発生します。
https://github.com/MycroftAI/mycroft-messagebus-client/pull/4
システム全体に--userオプションとしてインストールすると、それが表示されます。 それがvenv内でも発生するかどうかはわかりません。 おそらくそれはpyeeについてであるように関連しています。
それが発生した場合、ExecutorEventEmitterクラスが使用できないため、(テスト後に)発生するエラーはImportErrorsになると思います。
Akeとさらに調査してチャットした後、これは、すでにクリアされているイベントからコールバック関数をポップしようとしているMessageBusClient.emitter.once
メソッドである可能性があると思います。
これを確認する必要があります。trueの場合は、登録されている各関数が一意であることを確認してください。
そこで、いくつかのテストを行い、登録された各関数は一意です。 例外がキャッチされて報告されるため、ここでの問題は致命的ではないと思います。
私のテストでは、問題はタイムアウト(ハンドラーを削除する)とpyee once
ハンドラーの自動削除の間の競合状態であると私は信じています。 これは、上流でpyeeに報告する必要があるものかもしれません...
私は自分でランダムにエラーを確認し、mycroftのコードのどこでエラーがトリガーされるかを特定できるかどうかを確認するためにログを追加しました。 スキルプロセスのどこか...
私は上流で問題を開きました。
私の理論的観察に対する修正がpyeeに統合され、8.1.0としてリリースされました。 こことAdaptでPRを準備してバージョンを同期し、それで問題が解決するかどうかを確認します。 そうでなければ、他の問題もあります:)
最も参考になるコメント
私の理論的観察に対する修正がpyeeに統合され、8.1.0としてリリースされました。 こことAdaptでPRを準備してバージョンを同期し、それで問題が解決するかどうかを確認します。 そうでなければ、他の問題もあります:)