में एक विशिष्ट मॉड्यूल पर निर्भर मॉड्यूल की सूची कैसे खोजें मेरे पायथन आधारित वेब एप्लिकेशन के विकास के समय को कम करने के लिए, मैं हाल ही में संशोधित मॉड्यूल के लिए पुनः लोड() का उपयोग करने की कोशिश कर रहा हूं। रीलोड() एक समर्पित वेब पेज (वेब ऐप के विकास संस्करण का हिस्सा) के माध्यम से होता है जो मॉड्यूल को सूचीबद्ध करता है जिसे हाल ही में संशोधित किया गया है (और पीई फाइल का संशोधित समय टिकट संबंधित पीईसी फाइल के बाद है)। मॉड्यूल की पूरी सूची sys.modules से प्राप्त की जाती है (और मैं केवल उन मॉड्यूल पर ध्यान केंद्रित करने के लिए सूची फ़िल्टर करता हूं जो मेरे पैकेज का हिस्सा हैं)।पाइथन
व्यक्तिगत पायथन फ़ाइलों को फिर से लोड करना कुछ मामलों में काम करता है, न कि अन्य मामलों में। मुझे लगता है, संशोधित मॉड्यूल पर निर्भर सभी मॉड्यूल को पुनः लोड किया जाना चाहिए और पुनः लोडिंग उचित क्रम में होनी चाहिए।
मैं एक विशिष्ट मॉड्यूल द्वारा आयातित मॉड्यूल की सूची प्राप्त करने का एक तरीका ढूंढ रहा हूं। क्या Python में इस तरह के आत्मनिरीक्षण करने का कोई तरीका है?
मैं समझता हूं कि मेरा दृष्टिकोण 100% गारंटी नहीं हो सकता है और सबसे सुरक्षित तरीका सबकुछ फिर से लोड करना होगा, लेकिन यदि अधिकांश मामलों के लिए एक तेज दृष्टिकोण काम करता है, तो यह विकास उद्देश्यों के लिए पर्याप्त होगा।
Django autoreloader
@Glenn मेनार्ड, Thanx के बारे में टिप्पणी करने के लिए प्रतिक्रिया, मैं Django के autoreloader के बारे में पढ़ा था। मेरा वेब ऐप ज़ोप 3 पर आधारित है और पैकेजों की मात्रा और ज़ेडसीएमएल आधारित प्रारंभिकरणों के साथ, डेटाबेस पुनर्विक्रय बड़ा होने पर कुल पुनरारंभ लगभग 10 सेकंड से 30 सेकंड या उससे अधिक समय लेता है। मैं पुनरारंभ के दौरान बिताए गए इस समय पर कटौती करने का प्रयास कर रहा हूं। जब मुझे लगता है कि मैंने बहुत सारे बदलाव किए हैं, तो मैं आमतौर पर पूर्ण पुनरारंभ करना पसंद करता हूं, लेकिन अक्सर मैं यहां और वहां कुछ पंक्तियों को बदल रहा हूं जिसके लिए मैं इतना समय बिताना नहीं चाहता हूं। विकास सेटअप उत्पादन सेटअप से पूरी तरह से स्वतंत्र है और आमतौर पर अगर पुनः लोड में कुछ गलत होता है, तो यह स्पष्ट हो जाता है क्योंकि एप्लिकेशन पेज अजीब जानकारी दिखाने या अपवाद फेंकने लगते हैं। चुनिंदा रीलोड काम करेगा या नहीं, यह जानने में बहुत दिलचस्पी है।
Django के ऑटोरेलोडर की तरह कुछ करना अधिक सुरक्षित है, जो स्रोत फ़ाइल संशोधित होने पर पूरी तरह बैकएंड को फिर से निष्पादित करता है। मुझे किसी भी नुकसान का पता नहीं है; आप एक फ़ाइल को संशोधित करते हैं और सबकुछ बाद में दो या दो बार पुनः लोड किया जाता है। कुछ जो केवल "ज्यादातर" मामलों में काम करता है विकास के लिए बहुत बुरा है; आप बस सड़क पर दर्द से पीड़ित होने के लिए कह रहे हैं जब यह नहीं करता है। –
डुप्लिकेट प्रश्न के कारण यहां पुनरीक्षण करना, और जोड़ना "ज़ोप का उपयोग करते समय पुनः लोड समय को कम करने का तरीका" अब तक सॉना.रलोड का उपयोग करना है (2013) – jsbueno