Exceptions Klasse für httplib Connection Error finden?

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

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
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

Hi

Code: Alles auswählen

try:
    ...
except socket.error, e:
    print 'fehler',e
Gruss
7crystal7
User
Beiträge: 46
Registriert: Freitag 26. Mai 2006, 18:50

danke, so kann ich den Fehler abfangen oder finde ich so die entsprechende Klasse? Bin noch nicht so lang dabei,

danke
Babsi
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.
7crystal7
User
Beiträge: 46
Registriert: Freitag 26. Mai 2006, 18:50

super danke!

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

danke
babsi
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

7crystal7
User
Beiträge: 46
Registriert: Freitag 26. Mai 2006, 18:50

klasse dank!
7crystal7
User
Beiträge: 46
Registriert: Freitag 26. Mai 2006, 18:50

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
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

Hi

Probier mal:

Code: Alles auswählen

http._conn.sock.settimeout()
Gruss
7crystal7
User
Beiträge: 46
Registriert: Freitag 26. Mai 2006, 18:50

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
7crystal7
User
Beiträge: 46
Registriert: Freitag 26. Mai 2006, 18:50

sorry, auf Deinen vorschlag kommt leider:

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

Danke
Babsi
7crystal7
User
Beiträge: 46
Registriert: Freitag 26. Mai 2006, 18:50

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
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

Hi

Das kommt wenn das Timeout erreicht wurde ...

Code: Alles auswählen

try:
    ...
except socket.sslerror, e:
    print 'sslerror',e
Gruss
7crystal7
User
Beiträge: 46
Registriert: Freitag 26. Mai 2006, 18:50

danke, kann das auch daran liegen?

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

Danke
Babsi
Antworten