2015-02-07 7 views
7

मैं requests.post(url, headers, timeout=10) का उपयोग करें और कभी कभी मैं एक ReadTimeout exception HTTPSConnectionPool(host='domain.com', port=443): Read timed out. (read timeout=10)मुझे पायथन अनुरोध मॉड्यूल से टाइमआउट त्रुटि क्यों प्राप्त होती है?

के बाद से मैं पहले से ही 10 सेकंड के रूप में समाप्ति सेट प्राप्त किया, कारण है कि मैं अभी भी एक ReadTimeout अपवाद प्राप्त कर रहा हूँ?

+0

इसे एक कोशिश/पकड़ ब्लॉक में लपेटें? – royhowie

उत्तर

19

प्रति http://docs.python-requests.org/en/latest/user/quickstart/#timeouts, यह अपेक्षित व्यवहार है। royhowie उल्लेख किया है,/एक कोशिश में लपेट ब्लॉक (उदा .:

try: 
    requests.post(url, headers, timeout=10) 
except requests.exceptions.Timeout: 
    print "Timeout occurred" 

)

+0

हाय उत्तर आप त्वरित उत्तर के लिए। यह एक बेहतर जवाब है क्योंकि इस त्रुटि को पकड़ने से कनेक्टटाइमआउट और रीडटाइमआउट त्रुटियां दोनों मिल जाएंगी। – nuttynibbles

+0

@nuttynibbles आपने अपने प्रश्न में कहा था कि 'रीडटाइम अपवाद' कैसे पकड़ें? अन्यथा केवल 'कोशिश/छोड़कर' का उपयोग करें और उन सभी को पकड़ें। – GLHF

+0

क्षमा करें मुझे यकीन नहीं है कि यह 0 वोट क्यों दिखा रहा है, भले ही मैं आपके उत्तर – nuttynibbles

3
try: 
    #defined request goes here 
except requests.exceptions.ReadTimeout: 
    # Set up for a retry, or continue in a retry loop 

आप इस तरह एक अपवाद ब्लॉक की तरह लपेट कर सकते हैं को छोड़कर। चूंकि आपने केवल ReadTimeout के लिए कहा था। अन्यथा उन सभी को पकड़ो;

try: 
    #defined request goes here 
except: 
    # Set up for a retry, or continue in a retry loop 
+1

हाय टीके से अधिक समय लेता है तो यह अनुरोध प्रक्रिया को स्वतः रोक देगा त्वरित उत्तर के लिए। मैं वह करूँगा – nuttynibbles

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