Probleme mit urllib2 und socket

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
7crystal7
User
Beiträge: 46
Registriert: Freitag 26. Mai 2006, 18:50

Hi Leute,

Hier meine Funktion get_response die ein XML File als Antwort erwartet:

Code: Alles auswählen

def get_response(fullurl):
  
  urllib2.socket.setdefaulttimeout(5.0)
  req = Request(fullurl)
  try:
    doc_url = urlopen(req)
  except URLError, e:
    if e.code == 204:
      return False
    #authentication required error 
    #elif e.code == 401:
    #  return False
    else:
      raise
  else:
    # everything is fine
    reader = Sax2.Reader()
    doc_text = StripXml(reader.fromStream(doc_url))
    return doc_text
Das Problem ist das durch das einfügen der ersten Zeile (setdefaulttimeout) jetzt bei einem TimeOut folgender Fehler auftritt:

Did not raise an Exception of type urllib2.HTTPError, instead in class exceptions.AttributeError found a URLError instance has no attribute 'code'

Wie kann ich den abfangen so das meine eigene Exception ConnectionTimedOut geraised wird?

Danke
Babsi
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Die Exception Class URLErorr hat kein Attribut namens code. Das wird dir auch durch die Fehlermeldung "URLError instance has no attribute 'code'" Signalisiert. Daher kann es auch nicht "geraised" werden. Probiere mal stattdessen das Atribut errno abzufragen.

lg

P.S.: ruf mal pydoc.py -g auf und gebe mal urllib2 ein. Danach öffnet sich die doc in nem inet browser. Dort klick mal unter classes auf URLError. Dan werden dir alle Methoden und Atribute von URLError angezeigt.
Antworten