मैं टॉरनेडो में एक ऐप लिखने की कोशिश कर रहा हूं, जो एक श्रेणी वाले 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
Cara Esten Hurtle 28 जून 2011, 01:09

1 उत्तर

सबसे बढ़िया उत्तर

अधिक विवरण के बिना उत्तर देना कठिन है। यह वैश्विक चर या ऐसा कुछ का उपयोग कर किसी समस्या की तरह लगता है। इस प्रकार की समस्या को डीबग करने में मदद करने का एक अच्छा तरीका यह है कि आप प्रत्येक चरण में डेटा को संशोधित करने से पहले और बाद में लॉगिंग स्टेटमेंट जोड़ें।

DEBUG स्तर लॉगिंग को सक्षम करने के लिए कमांड लाइन पर --logging=debug के साथ अपना बवंडर ऐप चलाएं। फिर लॉगिंग स्टेटमेंट जोड़ें ताकि यह पता लगाया जा सके कि अतिरिक्त डेटा कहां जोड़ा गया है।

import logging
...
def on_response(self, response):
    logging.debug(response)
    self.write(response.body)
1
Jehiah 28 जून 2011, 07:37
कुछ डेटा लॉग करना शुरू किया, और पता चला कि, विचित्र रूप से, यह मेरे पास मौजूद वर्ग के मौजूदा उदाहरण का उपयोग कर रहा था (आरएसएस हैंडलर का हिस्सा)। अजीब! लेकिन, आपके उत्तर के लिए धन्यवाद मैंने इसे ठीक कर दिया। इसकी प्रशंसा करना!
 – 
Cara Esten Hurtle
20 जुलाई 2011, 01:28