2013-04-15 3 views
5

के लिए टाइमआउट नियंत्रण को कैसे कार्यान्वित करें पायथन में urlllib2.urlopen के लिए नियंत्रण को कैसे कार्यान्वित करें? मैं बस निगरानी करना चाहता हूं कि अगर 5 सेकंड में कोई XML डेटा वापस नहीं आती है, तो इस कनेक्शन को काट दें और फिर से कनेक्ट करें? क्या मुझे कुछ टाइमर का उपयोग करना चाहिए? THXurlllib2.urlopen

उत्तर

12
urllib2.urlopen("http://www.example.com", timeout=5) 
+0

इससे यह कारण होगा कि xml डेटा हर 5 सेकंड में लाया जाता है? – user2263305

+2

बिलकुल नहीं। जब मैं टाइमआउट पैरामीटर जोड़ता हूं तो यह 5 सेकंड तक डेटा लाने की कोशिश करेगा – Yarkee

+0

, पायथन स्क्रिप्ट केवल प्रत्येक 3/5 सेकंड में डेटा लाता है। लेकिन जब मैं टाइमआउट का उपयोग नहीं करता, तो यह डेटा प्रति सेकंड 1-5 बार लाता है। क्या हो रहा है? धन्यवाद – user2263305

7

urllib2 documentation से ...

वैकल्पिक टाइमआउट पैरामीटर कनेक्शन का प्रयास की तरह अवरुद्ध कार्यों के लिए सेकंड में एक टाइमआउट (यदि निर्दिष्ट नहीं है, वैश्विक डिफ़ॉल्ट टाइमआउट सेटिंग का उपयोग किया जाएगा) निर्दिष्ट करता है। यह वास्तव में HTTP, HTTPS और FTP कनेक्शन के लिए केवल काम करता है।

+2

और अगर आप अपवाद को पकड़ने के लिए चाहते हैं, आप इन सब को पकड़ने के लिए की आवश्यकता होगी .. 'ssl.SSLError',' urllib2.URLError', 'socket.timeout',' socket.error '(संभवतः मैंने सबकुछ शामिल नहीं किया था)। जिनमें से कुछ हमेशा टाइमआउट के कारण नहीं होते हैं, लेकिन आप अपवाद उदाहरण का पता लगाने के कुछ तरीकों से निरीक्षण कर सकते हैं, और यदि नहीं तो फिर से उठाएं। – GP89

+0

बहुत बहुत धन्यवाद। – user2263305

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