TypeError: __init__() 收到了一个意外的关键字参数 'check_hostname' 在 GAE 中使用 https
我在使用 GAE 的时候遇到了以下错误:
TypeError: __init__() got an unexpected keyword argument 'check_hostname'
错误堆栈信息:
File "C:\Dev\PycharmProjects\spiralai\default\src\facebook.py", line 99, in get_object
return self.request(id, args)
File "C:\Dev\PycharmProjects\spiralai\default\src\facebook.py", line 304, in request
urllib.urlencode(args), post_data)
File "C:\Python2764\Lib\urllib2.py", line 154, in urlopen
return opener.open(url, data, timeout)
File "C:\Python2764\Lib\urllib2.py", line 431, in open
response = self._open(req, data)
File "C:\Python2764\Lib\urllib2.py", line 449, in _open
'_open', req)
File "C:\Python2764\Lib\urllib2.py", line 409, in _call_chain
result = func(*args)
File "C:\Python2764\Lib\urllib2.py", line 1241, in https_open
context=self._context, check_hostname=self._check_hostname)
File "C:\Python2764\Lib\urllib2.py", line 1166, in do_open
h = http_class(host, timeout=req.timeout, **http_conn_args)
简单来说,这个问题出现在使用 urllib2 连接 HTTPS 的时候。我的代码里没有用到 check_hostname,这个是在 urllib2 里面的。出错的原因是 GAE 把 http_class 替换成了 google.appengine.dist27.gae_override.httplib.HTTPSConnection。而这个替换后的类似乎在方法里没有提供 urllib2 所期望的那个参数。有没有什么办法可以解决这个问题?基本上,所有使用 urllib2 并连接 HTTPS 的包都完全无法工作。这真是太荒谬了。
我使用的是 Python 2.7.9 x64 和最新的 GAE。
相关文章:
- 暂无相关问题
1 个回答
2
把Python从2.7.9升级到2.7.10解决了这个问题。