Seite 1 von 1

Exceptions Klasse für httplib Connection Error finden?

Verfasst: Freitag 6. Oktober 2006, 15:31
von 7crystal7
Hallo Leute,

ich versuche mich mittels der httplib über https zu verbinden und möchte gerne diesen Fehler abfangen, hier der Traceback:

* Module httplib, line 794, in endheaders
* Module httplib, line 675, in _send_output
* Module httplib, line 642, in send
* Module httplib, line 1068, in connect
* Module socket, line 1, in connect

error: (111, 'Connection refused')

Nicht das ihr mich falsch versteht, der Fehler ist bewusst provoziert, ich möchte ihn gerne abfangen und weiß nicht mit welcher Exceptions Klasse ich arbeiten muss. Wisst Ihr weiter?

Danke
Babsi

Verfasst: Freitag 6. Oktober 2006, 15:59
von rayo
Hi

Code: Alles auswählen

try:
    ...
except socket.error, e:
    print 'fehler',e
Gruss

Verfasst: Freitag 6. Oktober 2006, 16:04
von 7crystal7
danke, so kann ich den Fehler abfangen oder finde ich so die entsprechende Klasse? Bin noch nicht so lang dabei,

danke
Babsi

Verfasst: Freitag 6. Oktober 2006, 17:54
von BlackJack
So behandelst Du jeden `socket.error`. Wenn Du speziell auf 111/Connection refused reagieren willst, dann musst Du Dir das Ausnahme-Objekt, im Beispiel an den Namen `e` gebunden genauer ansehen. Das hat Attribute. Wenn's nicht die 111 ist, dann einfach mit ``raise`` die Ausnahme erneut auslösen falls sich Code auf einer "höheren Ebene" verantwortlich fühlt.

Verfasst: Samstag 7. Oktober 2006, 07:54
von 7crystal7
super danke!

Wisst ihr vielleicht auch wie man bei der httplib ein Connection TimeOut Limit setzen kann?

danke
babsi

Verfasst: Samstag 7. Oktober 2006, 08:08
von rayo

Verfasst: Samstag 7. Oktober 2006, 08:23
von 7crystal7
klasse dank!

Verfasst: Samstag 7. Oktober 2006, 10:32
von 7crystal7
sorry nochmal, ich hätte nochmal ne frage zum timeout. Im Beispiel des Links wird die Connection anders erstellt als bei mir, ich erstelle diese so:

Code: Alles auswählen

  
    http = httplib.HTTPS(xml_constants("host"))
    d = {}

    # write header
    http.putrequest(type, path)
wie kann ich hier das Timeout setzen?

danke
Babsi

Verfasst: Samstag 7. Oktober 2006, 10:47
von rayo
Hi

Probier mal:

Code: Alles auswählen

http._conn.sock.settimeout()
Gruss

Verfasst: Samstag 7. Oktober 2006, 10:52
von 7crystal7
danke ich teste es mal, folgendes ist noch zur Auswahl:

httplib.socket.setdefaulttimeout

und ich hab im netz noch das gefunden:
http://www.nongnu.org/bothans/pydoc/com ... ocket.html

aber ich kann das paket nicht importieren..

danke
babsi

Verfasst: Samstag 7. Oktober 2006, 10:55
von 7crystal7
sorry, auf Deinen vorschlag kommt leider:

AttributeError: 'NoneType' object has no attribute 'settimeout'

Danke
Babsi

Verfasst: Samstag 7. Oktober 2006, 11:07
von 7crystal7
hallo,

also ich machs jetzt so und das funktioniert eigentlich:

Code: Alles auswählen

httplib.socket.setdefaulttimeout(10.0)
Das Problem ist das ich daraufhin folgenden Fehler bekomme:

sslerror: The read operation timed out

Wo kommt der jetzt auf einmal her, wie kann ich den abfangen?

Lieben Dank,
Babsi

Verfasst: Samstag 7. Oktober 2006, 11:16
von rayo
Hi

Das kommt wenn das Timeout erreicht wurde ...

Code: Alles auswählen

try:
    ...
except socket.sslerror, e:
    print 'sslerror',e
Gruss

Verfasst: Samstag 7. Oktober 2006, 11:24
von 7crystal7
danke, kann das auch daran liegen?

https://sourceforge.net/tracker/?func=d ... up_id=5470

Danke
Babsi