TransportError:HTTPSConnectionPool

时间:2017-10-19 14:34:40

标签: python python-2.7 google-app-engine oauth google-speech-api

我按照enter image description here下载了Google Cloud SDK。 我通过以下方式下载了Google Speech API https://cloud.google.com/sdk/docs/quickstart-debian-ubuntu。 当我运行python transcribe.py resources / audio.raw时, 错误发生了。 我收到错误,TransportError:HTTPSConnectionPool(host ='accounts.google.com',port = 443):使用url超出最大重试次数:/ o / oauth2 / token(由SSLError引起(SSLError(1,你'[SSL: CERTIFICATE_VERIFY_FAILED]证书验证失败(_ssl.c:581)'),)) )&GT)

追溯是

E1019 18:46:20.868555489    3813 plugin_credentials.c:74]    Getting metadata from plugin failed with error: Traceback (most recent call last):
  File "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi", line 154, in grpc._cython.cygrpc.plugin_get_metadata (src/python/grpcio/grpc/_cython/cygrpc.c:7054)
  File "/home/pi/py2env/local/lib/python2.7/site-packages/grpc/_plugin_wrapping.py", line 106, in __call__
    AuthMetadataPluginCallback(wrapped_cygrpc_callback))
  File "/home/pi/py2env/local/lib/python2.7/site-packages/google/auth/transport/grpc.py", line 73, in __call__
    callback(self._get_authorization_headers(context), None)
  File "/home/pi/py2env/local/lib/python2.7/site-packages/google/auth/transport/grpc.py", line 61, in _get_authorization_headers
    headers)
  File "/home/pi/py2env/local/lib/python2.7/site-packages/google/auth/credentials.py", line 121, in before_request
    self.refresh(request)
  File "/home/pi/py2env/local/lib/python2.7/site-packages/google/oauth2/credentials.py", line 117, in refresh
    self._client_secret))
  File "/home/pi/py2env/local/lib/python2.7/site-packages/google/oauth2/_client.py", line 189, in refresh_grant
    response_data = _token_endpoint_request(request, token_uri, body)
  File "/home/pi/py2env/local/lib/python2.7/site-packages/google/oauth2/_client.py", line 104, in _token_endpoint_request
    method='POST', url=token_uri, headers=headers, body=body)
  File "/home/pi/py2env/local/lib/python2.7/site-packages/google/auth/transport/requests.py", line 115, in __call__
    raise exceptions.TransportError(exc)
TransportError: HTTPSConnectionPool(host='accounts.google.com', port=443): Max retries exceeded with url: /o/oauth2/token (Caused by SSLError(SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)'),))

Traceback (most recent call last):
  File "transcribe.py", line 94, in <module>
    transcribe_file(args.path)
  File "transcribe.py", line 52, in transcribe_file
    response = client.recognize(config, audio)
  File "/home/pi/py2env/local/lib/python2.7/site-packages/google/cloud/gapic/speech/v1/speech_client.py", line 201, in recognize
    return self._recognize(request, options)
  File "/home/pi/py2env/local/lib/python2.7/site-packages/google/gax/api_callable.py", line 452, in inner
    return api_caller(api_call, this_settings, request)
  File "/home/pi/py2env/local/lib/python2.7/site-packages/google/gax/api_callable.py", line 438, in base_caller
    return api_call(*args)
  File "/home/pi/py2env/local/lib/python2.7/site-packages/google/gax/api_callable.py", line 376, in inner
    return a_func(*args, **kwargs)
  File "/home/pi/py2env/local/lib/python2.7/site-packages/google/gax/retry.py", line 127, in inner
    ' classified as transient', exception)
google.gax.errors.RetryError: RetryError(Exception occurred in retry method that was not classified as transient, caused by <_Rendezvous of RPC that terminated with (StatusCode.UNAUTHENTICATED, Traceback (most recent call last):
  File "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi", line 154, in grpc._cython.cygrpc.plugin_get_metadata (src/python/grpcio/grpc/_cython/cygrpc.c:7054)
  File "/home/pi/py2env/local/lib/python2.7/site-packages/grpc/_plugin_wrapping.py", line 106, in __call__
    AuthMetadataPluginCallback(wrapped_cygrpc_callback))
  File "/home/pi/py2env/local/lib/python2.7/site-packages/google/auth/transport/grpc.py", line 73, in __call__
    callback(self._get_authorization_headers(context), None)
  File "/home/pi/py2env/local/lib/python2.7/site-packages/google/auth/transport/grpc.py", line 61, in _get_authorization_headers
    headers)
  File "/home/pi/py2env/local/lib/python2.7/site-packages/google/auth/credentials.py", line 121, in before_request
    self.refresh(request)
  File "/home/pi/py2env/local/lib/python2.7/site-packages/google/oauth2/credentials.py", line 117, in refresh
    self._client_secret))
  File "/home/pi/py2env/local/lib/python2.7/site-packages/google/oauth2/_client.py", line 189, in refresh_grant
    response_data = _token_endpoint_request(request, token_uri, body)
  File "/home/pi/py2env/local/lib/python2.7/site-packages/google/oauth2/_client.py", line 104, in _token_endpoint_request
    method='POST', url=token_uri, headers=headers, body=body)
  File "/home/pi/py2env/local/lib/python2.7/site-packages/google/auth/transport/requests.py", line 115, in __call__
    raise exceptions.TransportError(exc)
TransportError: HTTPSConnectionPool(host='accounts.google.com', port=443): Max retries exceeded with url: /o/oauth2/token (Caused by SSLError(SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)'),))
)>)

我安装的模块可以使用https到ubuntu,所以我真的无法理解为什么会出现这种错误。对Google Cloud API的身份验证是可以的,所以我不知道这是针对什么样的错误。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

看起来这是使用过时版本的openssl的问题。我通过运行yum update openssl并按照here的说明更新到版本1.0.2,在Centos 7上为我解决了这个问题。

另外,在Gentoo Linux机器上,我不得不用pip uninstall -y certifi && pip install certifi==2015.04.28

降级certifi。