HACKY SOLUTION
所以我花了相当长的一段时间搞清楚为什么出错了,结果我没有错。谷歌是。最终发生的情况是,App Engine的开发SDK中存在一个错误。Google App Engine无法解析www.facebook.com
为了解决这个问题(rediciously恼人的)问题,您可以执行以下操作:
打开文件名为/appengine/tools/devappserver2/python/sandbox.py
。
在文件的顶部添加import语句:
import socket as socket_original
然后替换此:
def load_module(self, fullname):
if fullname in sys.modules:
return sys.modules[fullname]
return self.import_stub_module(fullname)
有了这个:
def load_module(self, fullname):
if fullname == "socket":
return socket_original
if fullname in sys.modules:
return sys.modules[fullname]
return self.import_stub_module(fullname)
呯,你现在使用原始的套接字库。
原来的问题
我使用谷歌应用程序引擎主机我的网页API,我现在需要做一些API调用某些网站(包括Facebook),拨打电话到任何其他网站的工作方式很好,但是当谷歌应用程序引擎试图解析www.facebook.com
我得到以下错误:
RuntimeError: error('illegal IP address string passed to inet_pton',)
示例代码:
# Fetching `www.google.com`
socket.gethostbyname_ex("www.google.com")
# Returns:
[
"www.google.com",
[],
[
"173.194.65.106",
"173.194.65.104",
"173.194.65.105",
"173.194.65.103",
"173.194.65.99",
"173.194.65.147"
]
]
# Fetching `www.twitter.com`
socket.gethostbyname_ex("www.twitter.com")
# Returns:
[
"twitter.com",
[
"www.twitter.com"
],
[
"199.16.156.230",
"199.16.156.198",
"199.16.156.102",
"199.16.156.70"
]
]
# Fetching `www.facebook.com`
socket.gethostbyname_ex("www.facebook.com")
# Raises:
RuntimeError: error('illegal IP address string passed to inet_pton',)
你应该添加解决方案作为问题的答案,而不是问题更新,以防止问题显示为未答复... –