2012-07-06 18 views
8

में कस्टम डाउनलोडर मिडलवेयर को परिभाषित करने में असमर्थ मैं स्केपर में एक कस्टम डाउनलोडर मिडलवेयर क्लास स्थापित करने का प्रयास कर रहा हूं। मुझे संदेह है कि मैंने कुछ स्पष्ट याद किया है, लेकिन मैंने दस्तावेज़ों पर कुछ बार पढ़ा है और मुझे कोई समाधान नहीं मिला है। मैं थोड़ा निराश हो रहा हूं कि एक बेहद सरल काम क्या होना चाहिए, इसलिए उम्मीद है कि कोई मुझे कुछ अंतर्दृष्टि प्रदान करने में सक्षम होगा।स्केपर

मैंने अपनी सेटिंग्स.py फ़ाइल में निम्न पंक्ति जोड़ दी है।

DOWNLOADER_MIDDLEWARES = { 'myproject.middlewares.TestDownloader': 400 } 

उस पंक्ति को जोड़ने और प्रोजेक्ट चलाने के बाद, मुझे मॉड्यूल मध्यवर्ती मौजूद नहीं होने के बारे में एक त्रुटि मिली। कुछ शोध के बाद, मैंने पाया कि आपको __init__.py फ़ाइल को middlewares फ़ोल्डर में पाइथन के लिए पहचानने के लिए जोड़ने की आवश्यकता है। मैं इस किया था, और अब निम्न त्रुटि हो रही है:,

NameError: Module 'myproject.middlewares' doesn't define any object named 'TestDownloader' 

TestDownloader.py फ़ाइल संकलित नहीं किया जा रहा है, जबकि परियोजना में अन्य सभी * .py फ़ाइलें हैं। अगर मैं अपने पायथन को सही तरीके से पढ़ता हूं, तो इसका मतलब है कि इसे कहीं भी आयात नहीं किया जा रहा है, लेकिन मुझे यह काम करने के लिए बदलने के लिए कोई अतिरिक्त स्केपर सेटिंग्स नहीं मिल रही हैं।

उत्तर

17
DOWNLOADER_MIDDLEWARES = { 'myproject.middlewares.TestDownloader': 400 } 

इसके लिए काम करने के लिए, myproject फ़ोल्डर के अंदर फाइल middlewares.py बनाते हैं, और उस फ़ाइल में अपने डाउनलोडर मिडलवेयर वर्ग TestDownloader कहा जाता है डाल दिया।

या __init__.py इसके अंदर के साथ middlewares फ़ोल्डर होने, डाल अपने डाउनलोडर मिडलवेयर TestDownloader__init__.py अंदर बुलाया वर्ग डाल सकते हैं - यह भी काम करना चाहिए।

+1

हाँ, एक बेहद सरल समाधान जिसे मैंने कभी नहीं सोचा था। धन्यवाद। – Jared

संबंधित मुद्दे