App Engine python27 urlfetch错误:“[Errno 11003] getaddrinfo failed”

时间:2011-11-10 04:24:18

标签: google-app-engine python-2.7

我正在尝试将我的应用引擎应用从python 2.5切换到2.7而urlfetch.fetch()只是不想工作(至少在开发服务器上;我还没有部署它)。如果我做一些简单的事情:

file = urlfetch.fetch(url="http://www.google.com")

我收到以下错误:

File "C:\workspace\DjangoServer\src\mycode.py", line 167, in request
    file = urlfetch.fetch(url="http://www.google.com")
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\api\urlfetch.py", line 264, in fetch
    return rpc.get_result()
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\api\apiproxy_stub_map.py", line 592, in get_result
    return self.__get_result_hook(self)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\api\urlfetch.py", line 366, in _get_fetch_result
    raise DownloadError(str(err))
DownloadError: ApplicationError: 2 [Errno 11003] getaddrinfo failed

搜索互联网表明它可能是防火墙或代理问题,但我关闭了防火墙并且我不在代理服务器后面。

这在python 2.5 dev服务器上工作正常,但不是python 2.7 dev服务器。如果我打开一个python 2.7控制台并手动运行socket.getaddrinfo("www.google.com", 80),它也可以在那里工作。

有什么想法吗?还有其他人遇到过这个吗?

1 个答案:

答案 0 :(得分:1)

好的,我已经能够重现这个问题了,经过很多在git中来回使用的版本来自一个无法正常工作的版本我发现(至少在我的情况下)问题是在django-nonrel中(因为我立刻更新了所有内容:django-nonrel和appengine)。

因此,请执行以下操作:编辑djangoappengine / settings_base.py并更改

try:
    from google.appengine.api import apiproxy_stub_map
except ImportError:
    from .boot import setup_env
    setup_env()

from djangoappengine.utils import on_production_server, have_appserver

为:

from djangoappengine.utils import on_production_server, have_appserver
if not on_production_server:
    from .boot import setup_env
    setup_env()

真正的问题似乎是在先前版本的django-nonrel中,导入实际上写为:来自google.appengine.api import api_proxy_stub_map (从未找到过和setup_env( )总是被调用),因此,当导入被修复时,不再调用setup_env()(在我的情况下会出现错误)。

第二个注意事项是,由于某种原因,这只发生在Eclipse / PyDev内部运行时它在命令行上运行(尽管环境变量对我来说似乎相同,所以,我不确定为什么要从内部java实际上有所不同)。