2010-11-21 5 views
5

ich meine Anwendung auf meinem Produktions-Server ausgeführt wird, und es gibt mir diese Fehlermeldung:Eine einzigartige URLError: <urlopen Fehler Zeitüberschreitung> Fehler Ich erhalte

File "/usr/lib/python2.6/urllib2.py", line 391, in open 
    response = self._open(req, data) 

File "/usr/lib/python2.6/urllib2.py", line 409, in _open 
    '_open', req) 

File "/usr/lib/python2.6/urllib2.py", line 369, in _call_chain 
    result = func(*args) 

File "/usr/lib/python2.6/urllib2.py", line 1161, in http_open 
    return self.do_open(httplib.HTTPConnection, req) 

File "/usr/lib/python2.6/urllib2.py", line 1136, in do_open 
    raise URLError(err) 

URLError: <urlopen error timed out> 

BTW verstehe ich die error. Aber das ist nicht interessant. Der interessante Teil ist, dass, wenn ich dieses auf meinem local machine or test server renne, alles gut funktioniert. Es ist einfach zu nervig.

Jeder, wo ich das gleiche Betriebssystem verwende:

ubuntu 10.04 

Was die mögliche Ursache sein könnte? Jede Hilfe wird geschätzt.

Antwort

1

Können Sie die fragliche URL mit wget auf Ihrem Produktionsserver abrufen? Dies könnte eher ein Firewall-Problem als ein Python-Fehler sein.

+0

Wget arbeitet mit dieser URL auf dem Produktionsserver – scoparta

0

Es scheint vernünftig, dass die Produktionsmaschine möglicherweise länger dauert als Ihre Test- oder lokalen Maschinen, möglicherweise aufgrund von unzureichender oder übermäßiger Auslastung des Produktionssystems. Sie sollten also überprüfen, ob Sie wissen, was Ihre Timeouts sind Das globale Timeout versehentlich nicht zu aggressiv einstellen.

Dies ist wahrscheinlich ein Problem mit socket.setdefaulttimeout/socket.settimeout. Der Aufruf von urllib2.urlopen sollte ein Timeout-Argument in python2.6 akzeptieren. Versuchen Sie urllib2.urlopen (..., timeout = None) und sehen Sie, ob das Dinge verrechnet.

Ich würde auch den Wert von socket.getdefaulttimeout bestätigen, bevor Sie Ihren Aufruf urlopen.