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

时间:2014-10-24 17:24:42

标签: 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 *)'

它似乎每隔一段时间都有效,然后有时会抛出此错误。我尝试将所有数据/网址编码为' utf-8'但这似乎没什么帮助,因为我仍然得到错误。如果我转动验证= 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 *)'

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

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

0 个答案:

没有答案