عند إرسال مشكلة إلى مستودع 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 آسف: /
مجرد فكرة هنا. إذا قام المستخدم أو بعض المهارات بتثبيت حزمة pip "mycroft-messagebus-client" ، فهناك تعارض في إصدار pyee نظرًا لأن messagebus-client لا يزال يستخدم pyee == 5.0.1
https://github.com/MycroftAI/mycroft-messagebus-client/pull/4
أرى ذلك عند التثبيت على مستوى النظام كخيار مستخدم. لست متأكدًا مما إذا كان يحدث أيضًا داخل venv. ربما يتعلق الأمر كما هو الحال مع بيي.
إذا حدث ذلك ، فأنا أعتقد (بعد الاختبار) أن الأخطاء التي تحدث ستكون ImportErrors نظرًا لعدم توفر فئة ExecutorEventEmitter.
بعد المزيد من الاستقصاء والدردشة مع Ake ، أعتقد أن هذا قد يكون طريقة MessageBusClient.emitter.once
تحاول إيقاف وظيفة رد الاتصال عن حدث تم مسحه بالفعل.
ما زلنا بحاجة إلى التحقق من ذلك وإذا كان صحيحًا ، فربما نتأكد من أن كل وظيفة مسجلة فريدة.
لذلك أجريت بعض الاختبارات وكل وظيفة مسجلة فريدة من نوعها. أعتقد أن المشكلة هنا غير فادحة حيث تم اكتشاف الاستثناء والإبلاغ عنه.
تجعلني اختباراتي أعتقد أن المشكلة هي حالة تعارض بين المهلة (التي تزيل المعالج) وإزالة pyee once
تلقائيًا للمعالج. قد يكون هذا شيئًا نحتاج إلى الإبلاغ عنه في المنبع ...
لقد رأيت الخطأ بنفسي بشكل عشوائي وأضفت بعض التسجيل الإضافي لمعرفة ما إذا كان بإمكاني تحديد مكان تشغيل رمز mycroft. في مكان ما في عملية المهارات ...
فتحت قضية المنبع.
حسنًا ، تم دمج إصلاح لملاحظتي النظرية في pyee وتم إصداره كـ 8.1.0. سأقوم بإعداد PR هنا وعلى Adapt لمزامنة الإصدارات وسنرى ما إذا كان ذلك يحل المشكلة. وإلا ، فهناك مشكلة أخرى أيضًا :)
التعليق الأكثر فائدة
حسنًا ، تم دمج إصلاح لملاحظتي النظرية في pyee وتم إصداره كـ 8.1.0. سأقوم بإعداد PR هنا وعلى Adapt لمزامنة الإصدارات وسنرى ما إذا كان ذلك يحل المشكلة. وإلا ، فهناك مشكلة أخرى أيضًا :)