【问题标题】:SSL certificate expired error for influxdb-clientinfluxdb-client 的 SSL 证书过期错误
【发布时间】:2021-09-30 10:49:39
【问题描述】:

我有一台 Windows 10 机器,但我不确定问题出在哪里,直到几个小时前我都能运行所有东西,现在由于某种原因我一直遇到 SSL 证书过期错误。

重现步骤: 这是我的代码。

'''
'''
from datetime import datetime
from influxdb_client import InfluxDBClient

config = {
    'start': datetime.date(datetime(2021, 4, 7)),
    'stop': datetime.date(datetime(2021, 4, 10)),
    'bucket': "hidden",
    'org': "hidden",
    'url': "hidden",
    'token': "hidden",
    'measurement-name': "hidden",
}

client = InfluxDBClient(
    url="https://eu-central-1-1.aws.cloud2.influxdata.com",
    org=config['org'],
    bucket=config['bucket'],
    token=config['token'],
    # verify_ssl=False
)
query_api = client.query_api()

ticker = 'TSLA'
results_df = query_api.query_data_frame(
    f'from(bucket:"{config["bucket"]}")'
        f'|> range(start: {config["start"]}, stop: {config["stop"]}) '
        '|> filter(fn: (r) =>'
            f' r._measurement == "{config["measurement-name"]}"'
            f' and r.symbol == "{ticker}"'
        ') '
        '|> filter (fn: (r) =>'
            ' r._field == "price"'
        ') '
        '|> pivot('
            ' rowKey:["_time"],'
            ' columnKey: ["_field"],'
            ' valueColumn: "_value"'
        ') '
        '|> sort(columns: ["_time"], desc: false) '
)
print(results_df)

预期行为: 我希望它能够像往常一样为我提供一个数据框,并且正如您所见,当我保持 ssl_verify=False 时它可以工作。

    result table                     _time                    _start                     _stop             _measurement         source symbol       price
0  _result     0 2021-04-07 00:00:00+00:00 2021-04-07 00:00:00+00:00 2021-04-08 00:00:00+00:00  public_instruments_data  YAHOO-FINANCE   TSLA  670.969971

实际行为:

Traceback (most recent call last):
  File "d:\MAIN_ENV\lib\site-packages\urllib3\connectionpool.py", line 699, in urlopen
    httplib_response = self._make_request(
  File "d:\MAIN_ENV\lib\site-packages\urllib3\connectionpool.py", line 382, in _make_request
    self._validate_conn(conn)
  File "d:\MAIN_ENV\lib\site-packages\urllib3\connectionpool.py", line 1010, in _validate_conn
    conn.connect()
  File "d:\MAIN_ENV\lib\site-packages\urllib3\connection.py", line 411, in connect
    self.sock = ssl_wrap_socket(
  File "d:\MAIN_ENV\lib\site-packages\urllib3\util\ssl_.py", line 449, in ssl_wrap_socket
    ssl_sock = _ssl_wrap_socket_impl(
  File "d:\MAIN_ENV\lib\site-packages\urllib3\util\ssl_.py", line 493, in _ssl_wrap_socket_impl
    return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
  File "C:\Users\khans\AppData\Local\Programs\Python\Python39\lib\ssl.py", line 500, in wrap_socket
    return self.sslsocket_class._create(
  File "C:\Users\khans\AppData\Local\Programs\Python\Python39\lib\ssl.py", line 1040, in _create
    self.do_handshake()
  File "C:\Users\khans\AppData\Local\Programs\Python\Python39\lib\ssl.py", line 1309, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1129)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "d:\MAIN_ENV\lib\site-packages\influxdb_client\rest.py", line 181, in request
    r = self.pool_manager.request(
  File "d:\MAIN_ENV\lib\site-packages\urllib3\request.py", line 78, in request
    return self.request_encode_body(
  File "d:\MAIN_ENV\lib\site-packages\urllib3\request.py", line 170, in request_encode_body
    return self.urlopen(method, url, **extra_kw)
  File "d:\MAIN_ENV\lib\site-packages\urllib3\poolmanager.py", line 375, in urlopen
    response = conn.urlopen(method, u.request_uri, **kw)
  File "d:\MAIN_ENV\lib\site-packages\urllib3\connectionpool.py", line 755, in urlopen
    retries = retries.increment(
  File "d:\MAIN_ENV\lib\site-packages\urllib3\util\retry.py", line 507, in increment
    raise six.reraise(type(error), error, _stacktrace)
  File "d:\MAIN_ENV\lib\site-packages\urllib3\packages\six.py", line 769, in reraise
    raise value.with_traceback(tb)
  File "d:\MAIN_ENV\lib\site-packages\urllib3\connectionpool.py", line 699, in urlopen
    httplib_response = self._make_request(
  File "d:\MAIN_ENV\lib\site-packages\urllib3\connectionpool.py", line 382, in _make_request
    self._validate_conn(conn)
  File "d:\MAIN_ENV\lib\site-packages\urllib3\connectionpool.py", line 1010, in _validate_conn
    conn.connect()
  File "d:\MAIN_ENV\lib\site-packages\urllib3\connection.py", line 411, in connect
    self.sock = ssl_wrap_socket(
  File "d:\MAIN_ENV\lib\site-packages\urllib3\util\ssl_.py", line 449, in ssl_wrap_socket
    ssl_sock = _ssl_wrap_socket_impl(
  File "d:\MAIN_ENV\lib\site-packages\urllib3\util\ssl_.py", line 493, in _ssl_wrap_socket_impl
    return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
  File "C:\Users\khans\AppData\Local\Programs\Python\Python39\lib\ssl.py", line 500, in wrap_socket
    return self.sslsocket_class._create(
  File "C:\Users\khans\AppData\Local\Programs\Python\Python39\lib\ssl.py", line 1040, in _create
    self.do_handshake()
  File "C:\Users\khans\AppData\Local\Programs\Python\Python39\lib\ssl.py", line 1309, in do_handshake
    self._sslobj.do_handshake()
urllib3.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1129)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "d:\backend-dev-plaid\test_app_5.py", line 26, in <module>
    results_df = query_api.query_data_frame(
  File "d:\MAIN_ENV\lib\site-packages\influxdb_client\client\query_api.py", line 146, in query_data_frame
    _generator = self.query_data_frame_stream(query, org=org, data_frame_index=data_frame_index, params=params)
  File "d:\MAIN_ENV\lib\site-packages\influxdb_client\client\query_api.py", line 172, in query_data_frame_stream
    response = self._query_api.post_query(org=org, query=self._create_query(query, self.default_dialect, params),
  File "d:\MAIN_ENV\lib\site-packages\influxdb_client\service\query_service.py", line 260, in post_query
    (data) = self.post_query_with_http_info(**kwargs)  # noqa: E501
  File "d:\MAIN_ENV\lib\site-packages\influxdb_client\service\query_service.py", line 340, in post_query_with_http_info
    return self.api_client.call_api(
  File "d:\MAIN_ENV\lib\site-packages\influxdb_client\api_client.py", line 341, in call_api
    return self.__call_api(resource_path, method,
  File "d:\MAIN_ENV\lib\site-packages\influxdb_client\api_client.py", line 171, in __call_api
    response_data = self.request(
  File "d:\MAIN_ENV\lib\site-packages\influxdb_client\api_client.py", line 386, in request
    return self.rest_client.POST(url,
  File "d:\MAIN_ENV\lib\site-packages\influxdb_client\rest.py", line 302, in POST
    return self.request("POST", url,
  File "d:\MAIN_ENV\lib\site-packages\influxdb_client\rest.py", line 238, in request
    raise ApiException(status=0, reason=msg)
influxdb_client.rest.ApiException: (0)
Reason: SSLError
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1129)

规格:

  • 客户端版本:1.21.0
  • InfluxDB 版本:2.0
  • 平台:Windows 10 家庭版
  • Python:3.9.7

我再次尝试重新安装 python 和所有库,以确保问题不在我的最后,我还按照 urllib3 文档从 certifi 和 urllib3[secure] 安装证书,正如我保持 ssl_verify=False 时所建议的那样。 任何帮助将不胜感激,在此先感谢。

【问题讨论】:

    标签: python-3.x influxdb urllib3 influxdb-python


    【解决方案1】:

    【讨论】:

    • Jakub,谢谢,我也是在 git-hub 中提出问题的同一个人,哈哈。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-18
    • 2019-12-11
    • 2014-10-14
    • 2017-02-01
    • 2021-11-22
    • 1970-01-01
    相关资源
    最近更新 更多