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',)
你應該添加解決方案作爲問題的答案,而不是問題更新,以防止問題顯示爲未答覆... –