Requests/openssl:TypeError:ctype的初始化程序必须是指向同一类型的指针,而不是cdata

Ron*_*Ron 6 openssl python-requests

我遇到的问题是我无法找到其他地方的解决方案.

我正在使用包含客户端ID和令牌信息(仅仅是python字符串)的一些数据进行google请求,但我偶尔会遇到此错误:

TypeError: initializer for ctype 'int(*)(int, X509_STORE_CTX *)' must be a pointer to same type, not cdata 'int(*)(int, X509_STORE_CTX *)'
Run Code Online (Sandbox Code Playgroud)

它似乎每隔一段时间都有效,然后它有时会抛出这个错误.我尝试将所有数据/ url编码为'utf-8',但这似乎没有多大帮助,因为我仍然得到错误.如果我转为verify = False它可以工作,但我想保持它.这是完整的痕迹:

url = 'https://accounts.google.com/...'
data = {'refresh_token': ...,
                'client_id': …,
                'client_secret': ...,
                'grant_type': 'refresh_token',
                }

  File "/path/to/file/file.py", line 124, in _my_function.py
    response = requests.post(url, data=data)
  File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 94, in post
    return request('post', url, data=data, json=json, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 49, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 457, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 569, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/requests/adapters.py", line 362, in send
    timeout=timeout
  File "/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/connectionpool.py", line 516, in urlopen
    body=body, headers=headers)
  File "/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/connectionpool.py", line 304, in _make_request
    self._validate_conn(conn)
  File "/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/connectionpool.py", line 722, in _validate_conn
    conn.connect()
  File "/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/connection.py", line 229, in connect
    ssl_version=resolved_ssl_version)
  File "/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/contrib/pyopenssl.py", line 255, in ssl_wrap_socket
    ctx.set_verify(_openssl_verify[cert_reqs], _verify_callback)
  File "/usr/local/lib/python2.7/dist-packages/OpenSSL/SSL.py", line 550, in set_verify
    :param depth: An integer specifying the verify depth
TypeError: initializer for ctype 'int(*)(int, X509_STORE_CTX *)' must be a pointer to same type, not cdata 'int(*)(int, X509_STORE_CTX *)'
Run Code Online (Sandbox Code Playgroud)

使用请求2.4.2和pyopenssl 0.14.如果您有任何想法会很棒,谢谢.

编辑:将pyopenssl降级回0.13会使错误消失.