Python使用KafkaProducer通过SSL连接时出现FileNotFoundError
Kafka SSL连接文件找不到问题排查(Windows环境)
问题描述
在Windows机器上使用Python的KafkaProducer通过SSL连接Kafka broker,已采用原始字符串+双反斜杠格式配置证书文件(ca.pem、service.cert、service.key)的路径,执行流程为导入依赖库、设置证书路径、实例化SSL协议的KafkaProducer、发送消息到test-topic并执行flush。但明明证书文件存在于指定路径,仍触发错误:
FileNotFoundError: [Errno 2] No such file or directory
原代码
import json from kafka import KafkaProducer folderName =r'D:\\BigDataLocalSetup\\KafkaProject\\' producer = KafkaProducer( bootstrap_servers="kafka-project-abdullahqwerty70125-dee5.e.aivencloud.com:25025", security_protocol="SSL", ssl_cafile=folderName + "ca.pem", ssl_certfile=folderName + "service.cert", ssl_keyfile=folderName + "service.key", value_serializer=lambda v: json.dumps(v).encode('ascii'), key_serializer=lambda v: json.dumps(v).encode('ascii') ) producer.send("test-topic", key={"key": 1}, value={"message": "hello world"} ) producer.flush()
排查与解决方法
- 验证拼接后的实际路径:在代码里添加打印语句,输出拼接后的证书路径,确认和实际文件路径完全一致,注意检查大小写(部分库可能严格匹配文件名大小写):
print(folderName + "ca.pem") - 使用
os.path.join自动拼接路径:手动拼接路径容易出错,改用Python内置的路径处理工具,适配Windows系统的路径规则:import os folderName = r'D:\BigDataLocalSetup\KafkaProject' # 原始字符串单斜杠在Windows下同样有效 ssl_cafile = os.path.join(folderName, "ca.pem") ssl_certfile = os.path.join(folderName, "service.cert") ssl_keyfile = os.path.join(folderName, "service.key") - 检查文件权限:确认当前运行Python的用户对证书文件有读取权限,右键文件→属性→安全,查看并添加读取权限。
- 确认文件扩展名真实存在:Windows默认隐藏已知文件扩展名,可能你看到的
ca.pem实际是ca.pem.txt,打开文件夹选项→勾选“显示文件扩展名”,核实文件名正确。 - 修正代码缩进问题:原代码中
producer = KafkaProducer(前有多余缩进,会导致语法错误,先修正缩进,避免潜在问题影响调试。
内容的提问来源于stack exchange,提问作者Mariyam Shahzad
相关产品推荐
相关产品推荐

