Mac运行AIOHTTP客户端示例报错,求排查方案
问题解决步骤
1. 修复AsyncIO事件循环弃用警告
你的代码里使用的asyncio.get_event_loop()和loop.run_until_complete(main())在Python 3.7及以上版本已被弃用,替换为asyncio.run()即可消除警告:
修改后的代码:
import aiohttp import asyncio async def main(): async with aiohttp.ClientSession() as session: # 注意:http://python.org会被重定向到https,直接写https更稳妥 async with session.get('https://python.org') as response: print("Status:", response.status) print("Content-type:", response.headers['content-type']) html = await response.text() print("Body:", html[:15], "...") # 替换原事件循环代码 asyncio.run(main())
2. 解决SSL证书验证失败问题
Mac系统下的Python常因证书链不完整导致SSL验证失败,可通过以下方法解决:
方法一:运行官方证书安装脚本
找到Python 3.10安装目录下的Install Certificates.command文件,通常路径为:/Library/Frameworks/Python.framework/Versions/3.10/Install Certificates.command
双击运行该脚本,它会自动安装缺失的根证书,彻底解决验证问题。
方法二:临时跳过SSL验证(仅测试用,不推荐生产环境)
若只是临时测试,可在请求时添加ssl=False参数,但这会降低通信安全性:
async with session.get('https://python.org', ssl=False) as response: # 后续代码不变
方法三:指定自定义证书路径
如果你有可用的证书文件,可通过ssl参数指定证书路径:
import ssl ssl_context = ssl.create_default_context(cafile="/path/to/your/certificate.pem") async with session.get('https://python.org', ssl=ssl_context) as response: # 后续代码不变
内容的提问来源于stack exchange,提问作者Per-Åke Franklind
相关产品推荐
相关产品推荐

