لقد كنت أعاني من مشكلة استيراد لا يمكنني حلها على ما يبدو.
لدي تطبيق django (لا يستخدم django-rq بسبب بعض المشكلات التي لا أتذكرها) وكنت أستخدم rq بشكل جيد منذ فترة حتى الآن. أضفت وحدة أخرى إلى تطبيق django الخاص بي ، وبدأت في الحصول على خطأ في الاستيراد. لقد أكدت عدم وجود مشكلات استيراد دائرية. أظن أن هناك مشكلة في مساحة الاسم ولذا أريد أن أشرح قليلاً. أشعر أيضًا أن رسائل الخطأ لا تشير إلى المشكلات الحقيقية.
لدي وحدة تسمى quicken
تحتوي على from sprint.models import SmsRecord
. لم تكن هناك مشاكل. لقد قمت فيما بعد بإنشاء وحدة تسمى waze
والتي أيضًا from sprint.models import SmsRecord
، لكنني الآن أحصل على UnpickleError: (u'Could not unpickle', ImportError('cannot import name SmsRecord',))
. هنا هو التتبع الكامل .
لمعرفة ما يحدث ، قمت بتضمين import waze
في worker.py لمعرفة سبب الخطأ ، وأرى رسالة خطأ أفضل قليلاً
الإصدار المستخدم: rq == 0.5.6 ، redis == 2.10.5 و django == 1.8.4 كلها في بيئة OSX.
لا يبدو أن هذا خطأ في RQ ولكن في طريقة إعداد بيئتك. لست على دراية بالطريقة التي يتم بها تنظيم الكود الخاص بك ، لذا لا يمكنني تقديم الكثير من الأفكار.
واجهت نفس المشكلة وتمكنت من حلها من خلال التأكد من أنني كنت أشغل rq worker
في الدليل حيث يمكن استيراد الوحدة المطلوبة.
الترقية إلى rq == 0.10.0 أصلحت لي هذا الخطأ
وجود هذه المشكلة الآن على 1.1.0 😬
يبدو أنه تمت إزالة هذا الاستثناء في https://github.com/rq/rq/commit/e1cbc3736c55d7a72be121a170d1b8c811619dc2#diff -27817b1a9be843cacb4ebeb20393c486
التعليق الأكثر فائدة
واجهت نفس المشكلة وتمكنت من حلها من خلال التأكد من أنني كنت أشغل
rq worker
في الدليل حيث يمكن استيراد الوحدة المطلوبة.