Mam prostą stronę, którą testuję. Działa na localhost i mogę uzyskać do niego dostęp w mojej przeglądarce. Strona indeksu jest po prostu słowem "running". urllib.urlopen
wyświetli stronę z powodzeniem, ale urllib2.urlopen
nie będzie. Oto skrypt, który demonstruje problem (to jest rzeczywisty scenariusz, a nie uproszczenie innego skryptu testowego):urllib.urlopen działa, ale urllib2.urlopen nie ma
import urllib, urllib2
print urllib.urlopen("http://127.0.0.1").read() # prints "running"
print urllib2.urlopen("http://127.0.0.1").read() # throws an exception
Oto ślad stosu:
Traceback (most recent call last):
File "urltest.py", line 5, in <module>
print urllib2.urlopen("http://127.0.0.1").read()
File "C:\Python25\lib\urllib2.py", line 121, in urlopen
return _opener.open(url, data)
File "C:\Python25\lib\urllib2.py", line 380, in open
response = meth(req, response)
File "C:\Python25\lib\urllib2.py", line 491, in http_response
'http', request, response, code, msg, hdrs)
File "C:\Python25\lib\urllib2.py", line 412, in error
result = self._call_chain(*args)
File "C:\Python25\lib\urllib2.py", line 353, in _call_chain
result = func(*args)
File "C:\Python25\lib\urllib2.py", line 575, in http_error_302
return self.parent.open(new)
File "C:\Python25\lib\urllib2.py", line 380, in open
response = meth(req, response)
File "C:\Python25\lib\urllib2.py", line 491, in http_response
'http', request, response, code, msg, hdrs)
File "C:\Python25\lib\urllib2.py", line 418, in error
return self._call_chain(*args)
File "C:\Python25\lib\urllib2.py", line 353, in _call_chain
result = func(*args)
File "C:\Python25\lib\urllib2.py", line 499, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 504: Gateway Timeout
Jakieś pomysły? Mogę skończyć wymagając bardziej zaawansowanych funkcji urllib2
, więc nie chcę po prostu uciekać się do korzystania z urllib
, a także chcę zrozumieć ten problem.
Rozwiązało to problem, chociaż nie mam pojęcia, jak i dlaczego miał używać proxy, ponieważ mój skrypt miał tylko trzy wiersze i nie mam żadnych zmiennych środowiskowych, które wskazywałyby na jakiekolwiek proxy. Mimo to dobrze jest to rozwiązać, dlatego dziękuję za pomoc. –
Instancja OpenerDirector nie ma atrybutu "urlopen" - należy zmienić powyższy fragment na opener.open (... – ryan