में किसी प्रभाव से वापस प्रभाव से ट्रेसिंग मेरे पास Django में एक बड़ी बड़ी परियोजना है, जो एक उचित रूप से बड़ी ढांचा है, और मैं काफी बड़ी संख्या में ऐप्स, मध्यवर्ती, संदर्भ प्रोसेसर आदि का उपयोग कर रहा हूं। पैमाने का मतलब है कि जब कोडबेस का एक हिस्सा उन अनुरोधों के लिए चलाता है जहां मैं इसे नहीं चाहता हूं, यह पहचानना मुश्किल क्यों है। सीधे कोड निरीक्षण बहुत समय लेने वाला है, क्योंकि डीबगर में पूरे अनुरोध के माध्यम से सिंगल-स्टेपिंग है।एक बड़े पायथन कोडबेस
इस विशेष मामले में, मेरी समस्या यह है कि मुझे हर प्रतिक्रिया पर "वेरी: कुकी" मिल रहा है, जिनमें से कुछ मुझे भारी कैश करना चाहते हैं और जहां मुझे किसी भी कुकीज़ की आवश्यकता नहीं है। मुझे संदेह है, लेकिन यह साबित करने के बारे में नहीं पता कि कुछ मिडलवेयर या संदर्भ प्रोसेसर request.session
तक पहुंच रहा है, भले ही यह परिणाम का उपयोग न करे - हालांकि यह request.user
के माध्यम से अप्रत्यक्ष पहुंच हो सकता है। और निश्चित रूप से यह पूरी तरह से कुछ और हो सकता है।
पायथन में, आप एक बड़े कोडबेस में इसके कारण से एक प्रभाव से कैसे पता लगाएंगे ("वरी हेडर प्रतिक्रिया में जोड़ा गया था")?
हैलो। मैं django से परिचित नहीं हूं, लेकिन अगर आपको यह पता लगाना है कि 'ए [' एक्स '] = वाई' और' ए 'एक बिल्टिन ऑब्जेक्ट नहीं है तो आप केवल ए .__ setitem__ को अपने आप से बदल सकते हैं जांचें, क्या "वेरी: कुकी" हेडर '__setitem__' निष्पादित करने के बाद दिखाई दिया है, और यदि ऐसा है, तो बस कॉल स्टैक प्रिंट करें जो आपको उस चीज़ के बारे में मार्गदर्शन करेगा जो इसके कारण हुआ है। एक अन्य संस्करण एक डीबगर लिखना है जो आपकी प्रोग्राम लाइन को लाइन द्वारा निष्पादित करेगा और प्रत्येक बार जांच करेगा, यदि आपको आवश्यक हेडर को विशेष ऑब्जेक्ट में जोड़ा गया है। –
धन्यवाद, @alex_jordan, यह एक अच्छी शुरुआत है। आप प्रोग्राम स्टैक को प्रोग्राम स्टैक कैसे प्रिंट करते हैं? और इस मामले में मेरा मानना है कि यदि ध्वज कहीं और सेट किया गया है तो हेडर जोड़ा जाएगा, इसलिए कॉल स्टैक मुझे बताएगा कि कौन सा झंडा इसे ट्रिगर करता है; लेकिन जब ध्वज सेट किया गया था तो क्या मैं फ़ील्ड असाइनमेंट का पता लगा सकता हूं? अंत में, प्रश्न में वस्तुओं को प्रति अनुरोध आवंटित किया जाता है। क्या मैं उन सभी वर्गों के लिए ऐसा करने के लिए कक्षा से बंदर-पैच कर सकता हूं? –
जैमी, नीचे दिया गया समाधान केवल वही करता है और django त्रुटि रिपोर्टिंग का उपयोग करता है ताकि आपको खुद को स्टैक ट्रेस प्रिंट करने के विवरण के बारे में चिंता न करें। – BenTrofatter