urllib2 дава грешка "Мрежата е недостъпна" дори след настройка на http_proxy в bash

Опитвам се да тествам локално приложението си Google App Engine (Python). Трябва да направя малко извличане на URL адреси, опитах, но се показва следното съобщение за грешка.

"urllib2.URLError: <urlopen error [Errno 101] Network is unreachable>"

Затова се опитах да проверя дали внедряването изобщо се случва. Това също доведе до същата грешка

И тогава опитах в обвивката на Python:

>>>import urllib2
>>>a = urllib2.urlopen("http://google.com")
>>>a.code
200
>>>a.readlines
<addinfourl at 155594924 whose fp = <socket._fileobject object at 0x9443d6c>>

Въпреки че кодът на отговора е 200. Ако направя a.readlines, няма да получа действителния HTML. (a.readlines трябваше да изведе html?) Преди да опитам по-горе, имах моята http_proxy променлива, зададена в средата. Дори опитах от urllib2.install_opener(ProxyConfiguredOpener). И пак не става.

Не мога да правя никакви urllib2 URL отваряния, следователно не мога да работя с много инструменти като Google App Engine, който използва urllib2 за внедряване. Може ли някой да каже какво не е наред?


person Sravan    schedule 09.08.2012    source източник


Отговори (1)


a.code == 200 означава, че urllib2.urlopen() е успешен, докато работи в Python shell.

Когато работи в App Engine urllib2.urlopen() използва google.appengine.api.urlfetch().

Ако го стартирате локално, той трябва да използва конфигурацията на вашата локална мрежа. Грешката urlfetch не може да се използва зад прокси е коригирана.

person jfs    schedule 09.08.2012
comment
О да. 200 е успешно, но когато правя a.readlines, няма да получа html, а нещо като... ‹addinfourl на 155594924, чийто fp = ‹socket._fileobject обект на 0x9443d6c›› - person Sravan; 09.08.2012
comment
add () За извикване на извикваем в Python. - person jfs; 09.08.2012
comment
Опа какво правех! Съжаляваме, но разгръщането на App Engine все още дава същата грешка недостижима мрежа. - person Sravan; 09.08.2012
comment
@Sravan: опитахте ли да актуализирате SDK до най-новата версия? Уверете се, че HTTP_PROXY (и може би HTTPS_PROXY) е дефиниран в процеса на внедряване. - person jfs; 09.08.2012