2010-11-21 8 views
5

używam mojej aplikacji na moim serwerze produkcyjnym i to daje mi ten błąd:Wyjątkowy URLError: <urlopen błąd timed out> Błąd Dostaję

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 Rozumiem error. Ale to nie jest interesujące. Ciekawe jest to, że gdy uruchomię to na moim local machine or test server wszystko działa dobrze. To jest po prostu zbyt denerwujące.

Co gdzie używam tego samego OS:

ubuntu 10.04 

co może być możliwe przyczyny? Każda pomoc zostanie doceniona.

Odpowiedz

1

Czy możesz odzyskać adres URL z numerem wget na swoim serwerze produkcyjnym? Może to być problem z firewallem, a nie z błędem Pythona.

+0

Czynność wget działa na tym adresie URL na serwerze produkcyjnym – scoparta

0

Wydaje się uzasadnione, że maszyna produkcyjna może trwać znacznie dłużej niż test lub lokalne maszyny, prawdopodobnie z powodu niedostatecznego zasilania lub nadmiernego obciążenia systemu produkcyjnego, więc powinieneś sprawdzić, czy wiesz, jakie są Twoje opóźnienia i czy nie masz przypadkiem zbyt agresywnie ustawia globalny limit czasu.

Jest to prawdopodobnie problem z plikiem socket.setdefaulttimeout/socket.settimeout. Wywołanie urllib2.urlopen powinno zaakceptować argument timeout w python2.6. Spróbuj urllib2.urlopen (..., timeout = None) i sprawdź, czy to rozwiązuje problem.

Chciałbym również potwierdzić wartość socket.getdefaulttimeout przed wykonywaniem waken call.

Powiązane problemy