2011-12-02 12 views
14

लिनक्स पर कई घंटों तक चलने के बाद, मेरा पायथन 2.6 प्रोग्राम जो urllib2, httplib और threads का उपयोग करता है, प्रत्येक अनुरोध के लिए यह त्रुटि उठाता है:कई घंटों के लिए चलने के बाद स्थायी 'अस्थायी विफलता'

<class 'urllib2.URLError'> URLError(gaierror(-3, 'Temporary failure in name resolution'),)

यदि मैं प्रोग्राम को पुनरारंभ करता हूं तो यह फिर से काम करना शुरू कर देता है। मेरा अनुमान कुछ प्रकार का संसाधन थकावट है लेकिन मुझे नहीं पता कि इसके लिए कैसे जांच करें। मैं समस्या का निदान और समाधान कैसे करूं?

+2

आप पहले बंद कर रहे हैं HTTPRequests (या जो भी आप उपयोग कर रहे हैं)? –

+0

करने की कोशिश कर रहा है। मैंने अभी देखा है कि मेरे पास बड़ी संख्या में CLOSE_WAIT कनेक्शन हैं जो इस मुद्दे से संबंधित होना चाहिए। – 2371

उत्तर

12

यह पुस्तकालय की कनेक्शन बंद करने में विफलता के कारण हुआ था, जिससे CLOSE_WAIT स्थिति में बड़ी संख्या में कनेक्शन फंस गए। अंततः संसाधन थकावट के कारण 'नाम समाधान में अस्थायी विफलता' त्रुटि का कारण बनता है।

+12

जब यह समस्या ठीक से तय की गई थी? मुझे लगता है कि httplib लाइब्रेरी के कारण त्रुटि हुई थी? – pkaleta

+10

सेकेंड, कृपया अपने निष्कर्षों पर अधिक जानकारी प्रदान करें, धन्यवाद! –

+8

@ 2371: संसाधन थकावट के कारण यह कैसे पता चला? – rajpy

0

एक ही समस्या का सामना कर रहा था, मेरे मामले में यह संसाधन थकावट नहीं था, मेरे लिए समस्या तब हुई जब मेरे dhcp सर्वर ने नेमसर्वर पता बदल दिया, libc गेंद को खेलना नहीं चाहता था और नई resolv.conf फ़ाइल को फिर से लोड करना चाहता था एक कैश किया गया और हर बार जब यह बदल गया स्क्रिप्ट को पुनरारंभ करने के लिए मजबूर किया।

मेरे सभी अजगर सॉकेट कनेक्शन प्रयास शेष रहेंगे असफल, तो मैं this code कि स्थिति का हल मिल गया:,

import ctypes 
try: 
    libc = ctypes.CDLL('libc.so.6') 
    res_init = getattr(libc, '__res_init') 
    res_init(None) 
except: 
    pass 

socket.connect कॉल करने से पहले इसका इस्तेमाल उम्मीद है कि इस मदद करता है

संबंधित मुद्दे