【问题标题】:App Engine python27 urlfetch error: "[Errno 11003] getaddrinfo failed"App Engine python27 urlfetch 错误:“[Errno 11003] getaddrinfo 失败”
【发布时间】:2011-11-10 04:24:18
【问题描述】:

我正在尝试将我的应用程序引擎应用程序从 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 开发服务器中可以正常工作,但在 python 2.7 开发服务器中不行。如果我打开一个 python 2.7 控制台并手动运行socket.getaddrinfo("www.google.com", 80) 它也可以在那里工作。

有什么想法吗?有没有其他人遇到过这种情况?

【问题讨论】:

  • 您使用的是最新版本的 SDK,1.6.0?
  • 另外,您能否 ping localhost 并确认它解析为 127.0.0.1?
  • 是的,我使用的是 1.6 SDK,ping localhost 解析为 127.0.0.1。我的主机文件也是空的。我使用的是 Windows 7。
  • 好的。 FWIW,您的测试适用于所有相同的版本。
  • 其他域是否会发生这种情况,或者只是 google.com?

标签: google-app-engine python-2.7


【解决方案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 中,导入实际上写为:from google.appengine.api import api_proxy_stub_map(从未找到并且 setup_env( ) 总是被调用),所以,当导入被修复时, setup_env() 不再被调用(在我的例子中出现了错误)。

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

【讨论】:

  • 不幸的是,这并没有为我解决错误:(我正在使用 PyCharm。无论如何,谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-26
  • 1970-01-01
  • 2014-11-13
  • 2014-05-16
相关资源
最近更新 更多