crewai框架出现SSLError

使用crewai框架(0.102.0)的时候,控制台突然会出现很多报错信息,但是并不影响程序的实际输出

bash 复制代码
ERROR:opentelemetry.sdk.trace.export:Exception while exporting Span batch.
Traceback (most recent call last):
  File "G:\ProgramData\anaconda3\envs\crewai_1002\lib\site-packages\urllib3\connectionpool.py", line 464, in _make_request
    self._validate_conn(conn)
  File "G:\ProgramData\anaconda3\envs\crewai_1002\lib\site-packages\urllib3\connectionpool.py", line 1093, in _validate_conn
    conn.connect()
  File "G:\ProgramData\anaconda3\envs\crewai_1002\lib\site-packages\urllib3\connection.py", line 741, in connect
    sock_and_verified = _ssl_wrap_socket_and_match_hostname(
  File "G:\ProgramData\anaconda3\envs\crewai_1002\lib\site-packages\urllib3\connection.py", line 920, in _ssl_wrap_socket_and_match_hostname
    ssl_sock = ssl_wrap_socket(
  File "G:\ProgramData\anaconda3\envs\crewai_1002\lib\site-packages\urllib3\util\ssl_.py", line 460, in ssl_wrap_socket
    ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)
  File "G:\ProgramData\anaconda3\envs\crewai_1002\lib\site-packages\urllib3\util\ssl_.py", line 504, in _ssl_wrap_socket_impl
    return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
  File "G:\ProgramData\anaconda3\envs\crewai_1002\lib\ssl.py", line 513, in wrap_socket
    return self.sslsocket_class._create(
  File "G:\ProgramData\anaconda3\envs\crewai_1002\lib\ssl.py", line 1104, in _create
    self.do_handshake()
  File "G:\ProgramData\anaconda3\envs\crewai_1002\lib\ssl.py", line 1375, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1007)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "G:\ProgramData\anaconda3\envs\crewai_1002\lib\site-packages\urllib3\connectionpool.py", line 787, in urlopen
    response = self._make_request(
  File "G:\ProgramData\anaconda3\envs\crewai_1002\lib\site-packages\urllib3\connectionpool.py", line 488, in _make_request
    raise new_e
urllib3.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1007)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "G:\ProgramData\anaconda3\envs\crewai_1002\lib\site-packages\requests\adapters.py", line 667, in send
    resp = conn.urlopen(
  File "G:\ProgramData\anaconda3\envs\crewai_1002\lib\site-packages\urllib3\connectionpool.py", line 841, in urlopen
    retries = retries.increment(
  File "G:\ProgramData\anaconda3\envs\crewai_1002\lib\site-packages\urllib3\util\retry.py", line 519, in increment
    raise MaxRetryError(_pool, url, reason) from reason  # type: ignore[arg-type]
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='telemetry.crewai.com', port=4319): Max retries exceeded with url: /v1/traces (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1007)')))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "G:\ProgramData\anaconda3\envs\crewai_1002\lib\site-packages\opentelemetry\sdk\trace\export\__init__.py", line 360, in _export_batch
    self.span_exporter.export(self.spans_list[:idx])  # type: ignore
  File "G:\ProgramData\anaconda3\envs\crewai_1002\lib\site-packages\opentelemetry\exporter\otlp\proto\http\trace_exporter\__init__.py", line 189, in export
    return self._export_serialized_spans(serialized_data)
  File "G:\ProgramData\anaconda3\envs\crewai_1002\lib\site-packages\opentelemetry\exporter\otlp\proto\http\trace_exporter\__init__.py", line 159, in _export_serialized_spans
    resp = self._export(serialized_data)
  File "G:\ProgramData\anaconda3\envs\crewai_1002\lib\site-packages\opentelemetry\exporter\otlp\proto\http\trace_exporter\__init__.py", line 133, in _export
    return self._session.post(
  File "G:\ProgramData\anaconda3\envs\crewai_1002\lib\site-packages\requests\sessions.py", line 637, in post
    return self.request("POST", url, data=data, json=json, **kwargs)
  File "G:\ProgramData\anaconda3\envs\crewai_1002\lib\site-packages\requests\sessions.py", line 589, in request
    resp = self.send(prep, **send_kwargs)
  File "G:\ProgramData\anaconda3\envs\crewai_1002\lib\site-packages\requests\sessions.py", line 703, in send
    r = adapter.send(request, **kwargs)
  File "G:\ProgramData\anaconda3\envs\crewai_1002\lib\site-packages\requests\adapters.py", line 698, in send
    raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='telemetry.crewai.com', port=4319): Max retries exceeded with url: /v1/traces (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1007)')))

看上去不是自己代码的问题,翻了一下官方GitHub仓库里ISSUE的回复

有两种解决办法,添加如下代码

python 复制代码
from crewai.telemetry import Telemetry

def noop(*args, **kwargs):
print("Telemetry method called and noop'd\n")
pass

for attr in dir(Telemetry):
if callable(getattr(Telemetry, attr)) and not attr.startswith("__"):
setattr(Telemetry, attr, noop)

或者在顶部添加环境变量

python 复制代码
os.environ["OTEL_SDK_DISABLED"] = "true"

我使用的是第二种,确实没有报错了,舒服多了!

相关推荐
学历真的很重要5 小时前
VsCode+Roo Code+Gemini 2.5 Pro+Gemini Balance AI辅助编程环境搭建(理论上通过多个Api Key负载均衡达到无限免费Gemini 2.5 Pro)
前端·人工智能·vscode·后端·语言模型·负载均衡·ai编程
普通网友5 小时前
微服务注册中心与负载均衡实战精要,微软 2025 年 8 月更新:对固态硬盘与电脑功能有哪些潜在的影响。
人工智能·ai智能体·技术问答
苍何5 小时前
一人手搓!AI 漫剧从0到1详细教程
人工智能
苍何6 小时前
Gemini 3 刚刷屏,蚂蚁灵光又整活:一句话生成「闪游戏」
人工智能
苍何6 小时前
越来越对 AI 做的 PPT 敬佩了!(附7大用法)
人工智能
苍何6 小时前
超全Nano Banana Pro 提示词案例库来啦,小白也能轻松上手
人工智能
阿杰学AI7 小时前
AI核心知识39——大语言模型之World Model(简洁且通俗易懂版)
人工智能·ai·语言模型·aigc·世界模型·world model·sara
智慧地球(AI·Earth)7 小时前
Vibe Coding:你被取代了吗?
人工智能
大、男人8 小时前
DeepAgent学习
人工智能·学习
测试人社区—66798 小时前
提升测试覆盖率的有效手段剖析
人工智能·学习·flutter·ui·自动化·测试覆盖率