कनेक्शन पाखंड के मामले में मेरे पायथन अनुप्रयोगों में से एक को और अधिक मजबूत बनाने की कोशिश करते समय मुझे पता चला कि urllib2 द्वारा बनाए गए http-stream के पढ़ने के फ़ंक्शन को कॉल करना ब्लॉक हो सकता है हमेशा के लिए लिपि।urllib2 द्वारा बनाई गई स्ट्रीम को पढ़ने से कभी भी ठीक नहीं हो जाता है जब कनेक्शन बाधित हो जाता है
मैंने सोचा कि पढ़ा गया कार्य समय-समय पर समाप्त हो जाएगा और अंततः एक अपवाद उठाएगा, लेकिन जब यह एक फंक्शन फ़ंक्शन कॉल के दौरान कनेक्शन बाधित हो जाता है तो यह मामला नहीं है।
यहाँ कोड है कि समस्या का कारण होगा है:
import urllib2
while True:
try:
stream = urllib2.urlopen('http://www.google.de/images/nav_logo4.png')
while stream.read(): pass
print "Done"
except:
print "Error"
(आप स्क्रिप्ट आप शायद स्क्रिप्ट कभी नहीं ठीक है जहाँ से आप इससे पहले कि आप राज्य तक पहुंच जाएगा कनेक्शन कई बार बाधित करने के लिए की जरूरत है बाहर का प्रयास करें)
मैंने स्क्रिप्ट को Winpdb के माध्यम से देखा और उस राज्य का एक स्क्रीनशॉट बनाया जहां से स्क्रिप्ट कभी ठीक नहीं होती है (भले ही नेटवर्क फिर से उपलब्ध हो)।
Winpdb http://img10.imageshack.us/img10/6716/urllib2.jpg
वहाँ एक अजगर स्क्रिप्ट है कि विश्वसनीय काम करने के लिए भले ही नेटवर्क कनेक्शन बाधित हो गया जारी रहेगा बनाने के लिए एक तरीका है? (मैं इसे अतिरिक्त थ्रेड के अंदर करने से बचना पसंद करूंगा।)
एक अच्छी तरह से लिखा सवाल –