मैं टॉरनेडो में एक ऐप लिखने की कोशिश कर रहा हूं, जो एक श्रेणी वाले POST अनुरोध प्राप्त करने पर, एक फ़ंक्शन को कॉल करेगा जो उस विषय के साथ आरएसएस फ़ीड (एक कॉच डीबी डेटाबेस में आयोजित) की सूची में HTTP अनुरोधों को (अवरुद्ध) करेगा, फिर डेटा पर कुछ सॉर्टिंग करें, टोरनेडो एसिंक अनुरोध हैंडलर को एक शब्दकोश लौटाएं। अब तक, यह अपेक्षाकृत अच्छी तरह से काम करने लगता है जब उपयोगकर्ता इसे पहली बार एक्सेस करता है।
उसी पृष्ठ पर दूसरे POST अनुरोध पर, यह अक्सर एक से अधिक श्रेणियों से एकत्रित परिणामों को जोड़ देगा, जैसे कि प्रत्येक श्रेणी के लिए फ़ंक्शन कॉल किसी कारण से संयुक्त किए जा रहे हैं। मैं इवेंट-संचालित प्रोग्रामिंग के लिए नया हूं और मुझे नहीं पता कि ऐसा क्यों हो रहा है। यह एक गड़बड़ हो रहा है, क्योंकि उपयोगकर्ता एक श्रेणी पर क्लिक करेगा और दोनों के लिए परिणाम प्राप्त करेगा।
यहाँ संरचना का एक छोटा सा आरेख है:
Calls: Tornado Async Handler -> get_data(category) -> RSS_handler(RSS_feed)
Returns: self.write(data) <- more_data <- some_data
कोई विचार क्यों ये कॉल संयुक्त हो रहे हैं? मेरा RSS हैंडलर वर्ग अपने init फ़ंक्शन में सभी सदस्य चर को साफ़ करता है, जैसा कि get_data फ़ंक्शन जो प्रसंस्करण करता है।
(कोड शामिल होता, लेकिन वास्तव में यहां पेस्ट करने के लिए इसमें बहुत अधिक है, और मुझे नहीं पता कि कौन सी रेखा इसका कारण बन रही है)
1 उत्तर
अधिक विवरण के बिना उत्तर देना कठिन है। यह वैश्विक चर या ऐसा कुछ का उपयोग कर किसी समस्या की तरह लगता है। इस प्रकार की समस्या को डीबग करने में मदद करने का एक अच्छा तरीका यह है कि आप प्रत्येक चरण में डेटा को संशोधित करने से पहले और बाद में लॉगिंग स्टेटमेंट जोड़ें।
DEBUG स्तर लॉगिंग को सक्षम करने के लिए कमांड लाइन पर --logging=debug
के साथ अपना बवंडर ऐप चलाएं। फिर लॉगिंग स्टेटमेंट जोड़ें ताकि यह पता लगाया जा सके कि अतिरिक्त डेटा कहां जोड़ा गया है।
import logging
...
def on_response(self, response):
logging.debug(response)
self.write(response.body)
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।