TypeError: __init__() 收到了一个意外的关键字参数 'check_hostname' 在 GAE 中使用 https

3 投票
1 回答
1150 浏览
提问于 2025-05-11 02:15

我在使用 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解决了这个问题。

撰写回答