Seite 1 von 1

Probleme mit urllib2 und socket

Verfasst: Samstag 7. Oktober 2006, 12:46
von 7crystal7
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

Verfasst: Montag 30. Oktober 2006, 13:30
von sape
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.