Mycroft-core: خطأ pyee | استثناء استدعاء رد الاتصال ل<future at="" state="finished" raised="" keyerror=""/>

تم إنشاؤها على ١٦ سبتمبر ٢٠٢٠  ·  10تعليقات  ·  مصدر: MycroftAI/mycroft-core

كيفية إرسال إصدار إلى مستودع Mycroft

عند إرسال مشكلة إلى مستودع Mycroft ، يرجى اتباع هذه الإرشادات لمساعدتنا على مساعدتك.

كن واضحًا بشأن البرامج والأجهزة والإصدار الذي تقوم بتشغيله

فمثلا:

  • أنا أدير Picroft
  • بأحدث إصدار
  • مع Wake Word القياسي

حاول تقديم الخطوات التي يمكننا استخدامها لتكرار المشكلة

فمثلا:

  1. افتح mycroft cli
  2. انتظر (يأتي كل 30 ثانية تقريبًا)

قدم ملفات السجل أو مخرجات أخرى لمساعدتنا في رؤية الخطأ

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

التعليق الأكثر فائدة

حسنًا ، تم دمج إصلاح لملاحظتي النظرية في pyee وتم إصداره كـ 8.1.0. سأقوم بإعداد PR هنا وعلى Adapt لمزامنة الإصدارات وسنرى ما إذا كان ذلك يحل المشكلة. وإلا ، فهناك مشكلة أخرى أيضًا :)

ال 10 كومينتر

هل يمكنك محاولة ضبط مستوى السجل لتصحيح الأخطاء عن طريق إدخال الأمر cli :log level debug لمعرفة ما إذا كان يعطي المزيد من المعلومات ، ما الذي يحاول فعله بشكل صحيح قبل الخطأ هناك؟

يبدو أن الخطأ يظهر عندما يحاول wait_for_response() أو wait_for_message() إزالة معالج تمت إزالته بالفعل. سوف أرى ما إذا كان بإمكاني استفزاز حدوث ذلك.

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

الرتق ، لا توجد معلومات إضافية إذا كنت أقرأ تلك اللقطات بشكل صحيح. لم أتمكن من إعادة إنتاجه بالأمس لكنني سأحاول المزيد.

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 لمزامنة الإصدارات وسنرى ما إذا كان ذلك يحل المشكلة. وإلا ، فهناك مشكلة أخرى أيضًا :)

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

damorosodaragona picture damorosodaragona  ·  5تعليقات

AMDphreak picture AMDphreak  ·  10تعليقات

fermulator picture fermulator  ·  6تعليقات

Zacki84 picture Zacki84  ·  10تعليقات

beemorris picture beemorris  ·  6تعليقات