Waiting for receiving data
Gerald Walker
geraldwalkerx at gmail.com
Mon Nov 23 20:53:23 EST 2009
Anjanesh Lekshminarayanan wrote:
> fp = urllib.urlopen(url)
> data = fp.read()
>
> Retrieving XML data via an XML service API.
> Very often network gets stuck in between. No errors / exceptions.
>
> CTRL+C
>
> File "get-xml.py", line 32, in <module>
> fp = urllib.urlopen(url)
> File "/usr/lib/python2.6/urllib.py", line 87, in urlopen
> return opener.open(url)
> File "/usr/lib/python2.6/urllib.py", line 206, in open
> return getattr(self, name)(url)
> File "/usr/lib/python2.6/urllib.py", line 348, in open_http
> errcode, errmsg, headers = h.getreply()
> File "/usr/lib/python2.6/httplib.py", line 1048, in getreply
> response = self._conn.getresponse()
> File "/usr/lib/python2.6/httplib.py", line 974, in getresponse
> response.begin()
> File "/usr/lib/python2.6/httplib.py", line 391, in begin
> version, status, reason = self._read_status()
> File "/usr/lib/python2.6/httplib.py", line 349, in _read_status
> line = self.fp.readline()
> File "/usr/lib/python2.6/socket.py", line 397, in readline
> data = recv(1)
> KeyboardInterrupt
>
> Is there I can do to try something else if its taking too long to
> retrieve from the network ? Like kill previous attempt and retry ?
>
> Thanks
> Anjanesh Lekshmnarayanan
import socket
from urllib2 import urlopen
# A one-hundredths of a second (0.01) timeout before socket throws
# an exception to demonstrate catching the timeout.
# Obviously, this you will set this greater than 0.01 in real life.
socket.setdefaulttimeout(0.01)
# example xml feed
xml_source = "http://mlb.mlb.com/partnerxml/gen/news/rss/mlb.xml"
try:
data = urlopen(xml_source)
except urllib2.URLError, e:
print 'URLError = ' + str(e.reason)
More information about the Python-list
mailing list