python - 无法使用 TableauServerClient 连接到 Tableau Server 10.5
问题描述
我已使用以下 Python 代码连接到 Tableau Server:
import tableauserverclient as TSC
tableau_auth = TSC.TableauAuth('username', 'password')
server = TSC.Server('https://server_name.com/')
server.auth.sign_in(tableau_auth)
但我收到以下错误:
Traceback (most recent call last):
File "C:\Program Files\Anaconda3\lib\site-packages\urllib3\contrib\pyopenssl.py", line 444, in wrap_socket
cnx.do_handshake()
File "C:\Program Files\Anaconda3\lib\site-packages\OpenSSL\SSL.py", line 1443, in do_handshake
self._raise_ssl_error(self._ssl, result)
File "C:\Program Files\Anaconda3\lib\site-packages\OpenSSL\SSL.py", line 1191, in _raise_ssl_error
_raise_current_error()
File "C:\Program Files\Anaconda3\lib\site-packages\OpenSSL\_util.py", line 48, in exception_from_error_queue
raise exception_type(errors)
OpenSSL.SSL.Error: [('SSL routines', 'ssl3_get_server_certificate', 'certificate verify failed')]
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Program Files\Anaconda3\lib\site-packages\urllib3\connectionpool.py", line 600, in urlopen
chunked=chunked)
File "C:\Program Files\Anaconda3\lib\site-packages\urllib3\connectionpool.py", line 343, in _make_request
self._validate_conn(conn)
File "C:\Program Files\Anaconda3\lib\site-packages\urllib3\connectionpool.py", line 849, in _validate_conn
conn.connect()
File "C:\Program Files\Anaconda3\lib\site-packages\urllib3\connection.py", line 356, in connect
ssl_context=context)
File "C:\Program Files\Anaconda3\lib\site-packages\urllib3\util\ssl_.py", line 359, in ssl_wrap_socket
return context.wrap_socket(sock, server_hostname=server_hostname)
File "C:\Program Files\Anaconda3\lib\site-packages\urllib3\contrib\pyopenssl.py", line 450, in wrap_socket
raise ssl.SSLError('bad handshake: %r' % e)
ssl.SSLError: ("bad handshake: Error([('SSL routines', 'ssl3_get_server_certificate', 'certificate verify failed')],)",)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Program Files\Anaconda3\lib\site-packages\requests\adapters.py", line 445, in send
timeout=timeout
File "C:\Program Files\Anaconda3\lib\site-packages\urllib3\connectionpool.py", line 638, in urlopen
_stacktrace=sys.exc_info()[2])
File "C:\Program Files\Anaconda3\lib\site-packages\urllib3\util\retry.py", line 398, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='server_name.com', port=443): Max retries exceeded with url: //api/2.3/auth/signin (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'ssl3_get_server_certificate', 'certificate verify failed')],)",),))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Program Files\Anaconda3\lib\site-packages\tableauserverclient\server\endpoint\endpoint.py", line 114, in wrapper
return func(self, *args, **kwargs)
File "C:\Program Files\Anaconda3\lib\site-packages\tableauserverclient\server\endpoint\auth_endpoint.py", line 30, in sign_in
**self.parent_srv.http_options)
File "C:\Program Files\Anaconda3\lib\site-packages\requests\sessions.py", line 559, in post
return self.request('POST', url, data=data, json=json, **kwargs)
File "C:\Program Files\Anaconda3\lib\site-packages\requests\sessions.py", line 512, in request
resp = self.send(prep, **send_kwargs)
File "C:\Program Files\Anaconda3\lib\site-packages\requests\sessions.py", line 622, in send
r = adapter.send(request, **kwargs)
File "C:\Program Files\Anaconda3\lib\site-packages\requests\adapters.py", line 511, in send
raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='server_name.com', port=443): Max retries exceeded with url: //api/2.3/auth/signin (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'ssl3_get_server_certificate', 'certificate verify failed')],)",),))
解决方案
添加这行代码...
server.add_http_options({'verify': False})
推荐阅读
- java - org.springframework.beans.BeanInstantiationException:无法实例化 [org.springframework.web.servlet.HandlerMapping]:没有设置 ServletContext
- exception - 在 Groovy 中为异常或错误添加更多上下文
- javascript - Jsdoc 不排除路径
- selenium - 哪个 firefox 版本与 selenium webdriver 3.6.0 兼容?
- java - 如何将文本文件读取为列/行
- python-3.x - 对象没有python3的属性错误
- ios - FCM 设备组与主题
- javascript - 如何在javascript中拆分对象数组?
- c# - FirebaseException:请改用 setDomainUriPrefix(),setDynamicLinkDomain() 仅适用于 *.page.link 和 *.app.goo.gl 域
- mysql - hibernate中使用单表策略时将超类的实例更新为子类的实例