2013-04-10 10 views
11

का उपयोग कर DNS क्वेरी कुछ DNS क्वेरी करने के लिए मैं Google App Engine के लिए नए सॉकेट समर्थन का उपयोग करने का प्रयास कर रहा हूं। मैं क्वेरी करने के लिए dnspython का उपयोग कर रहा हूं, और कोड GAE के बाहर ठीक काम करता है।Google ऐप इंजन सॉकेट

कोड है निम्नलिखित:

class DnsQuery(webapp2.RequestHandler): 

    def get(self): 
     domain = self.request.get('domain') 
     logging.info("Test Query for "+domain) 
     answers = dns.resolver.query(domain, 'TXT', tcp=True) 
     logging.info("DNS OK") 
     for rdata in answers: 
      rc = str(rdata.exchange).lower() 
      logging.info("Record "+rc) 

जब मैं GAE में चला मैं निम्नलिखित त्रुटि मिलती है:

File "/base/data/home/apps/s~/one.366576281491296772/main.py", line 37, in post 
    return self.get() 
    File "/base/data/home/apps/s~/one.366576281491296772/main.py", line 41, in get 
    answers = dns.resolver.query(domain, 'TXT', tcp=True) 
    File "/base/data/home/apps/s~/one.366576281491296772/dns/resolver.py", line 976, in query 
    raise_on_no_answer, source_port) 
    File "/base/data/home/apps/s~/one.366576281491296772/dns/resolver.py", line 821, in query 
    timeout = self._compute_timeout(start) 
    File "/base/data/home/apps/s~/one.366576281491296772/dns/resolver.py", line 735, in _compute_timeout 
    raise Timeout 

कौन सा dnspython द्वारा उठाया जाता है जब कोई जवाब नहीं समय सीमा के भीतर दिया जाता है। मैंने timelimit 60 सेकंड तक बढ़ाया है, और DnsQuery एक कार्य है, लेकिन फिर भी वही त्रुटि मिल रही है।

क्या Google App Engine सॉकेट कार्यान्वयन में कोई सीमा है, जो DNS अनुरोधों को निष्पादित करने से रोकती है?

+0

मुझे Google App Engine के साथ भी एक ही समस्या है। – Uri

+0

@Cyril N: जाँच करें कि इसके अलावा में किसी सशुल्क ऐप तो आपको उसके लिए एक दैनिक बजट निर्धारित करने के लिए - पिछले साल कम से कम के कुछ चुकता केवल ठीक से काम नहीं सुविधाओं तक दैनिक बजट प्रारंभ किया गया था रिपोर्टों थे। –

+0

@DanCornilescu मैं बिलिंग> बजट और अलर्ट के पास गया और मैं पहले से ही कुछ threesholds की एक चेतावनी परिभाषित किया है। क्या आपका आशय यही था? मैंने http://stackoverflow.com/a/10894376/330867 पर पढ़ा है कि Google आपके मेल कोटा को बढ़ाने से पहले पहला भुगतान साफ़ होने तक प्रतीक्षा करेगा। ' शायद यह मेरा मुद्दा है। लेकिन तब मैं अपने App इंजन> कोटा के पास गया, और मैं देख सकता हूँ कि सॉकेट प्रविष्टि के अंतर्गत, मेरे ऐप कुछ अनुरोध किया था (शायद अजगर पैकेज 'requests', जो मैं का उपयोग का उपयोग)। तो 'सॉकेट' को काम करना चाहिए, लेकिन 'dnspython' के साथ नहीं? –

उत्तर

7

यह एक बग है और ASAP को ठीक किया जाएगा।

एक कामकाज के रूप में, स्रोत = '' dns.resolver.query के लिए तर्क में पास करें।

टीसीपी = सत्य आवश्यक नहीं है।

+0

यह काम करता है! मैं इश्यू ट्रैकर को भी अपडेट करूंगा। – ROOTto

+1

यह मेरे लिए अभी काम नहीं करता है। क्या कोई और कामकाज है? – Uri

+0

वीजेज ने उल्लेख किया है, यह केवल सशुल्क ऐप्स के लिए काम कर सकता है, यही कारण है कि यह समाधान आपके लिए उरी के लिए काम नहीं करता है? –

1

नहीं। यूडीपी बंदरगाहों पर कोई सीमा नहीं है। (टीसीपी पर केवल smtp बंदरगाहों)।

सॉकेट सेवा रूटिंग के साथ कोई समस्या है। कृपया ऐप इंजन इश्यू ट्रैकर के साथ कोई समस्या दर्ज करें। https://code.google.com/p/googleappengine/issues/list

1

dnspython socket का उपयोग कर रहा है। हालांकि, सॉकेट केवल ऐप्स में उपलब्ध है। 1