You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AsyncPraw基础Reddit API示例执行后报错及警告问题求助

解决AsyncPraw运行时的会话未关闭、SSL错误及事件循环问题

1. 彻底解决未关闭客户端会话警告与SSL错误

问题根源是AsyncPraw的Reddit客户端会话没有被正确关闭,导致HTTP连接残留触发警告和SSL错误。最规范的解决方式是用async with上下文管理器创建Reddit实例,它会在代码块执行完毕后自动关闭会话:

import asyncio
import asyncpraw

async def amain():
    # 用async with自动管理客户端生命周期
    async with asyncpraw.Reddit(
        client_id="你的客户端ID",
        client_secret="你的客户端密钥",
        user_agent="你的用户代理标识"
    ) as reddit:
        subreddit = await reddit.subreddit("test")
        async for submission in subreddit.hot(limit=10):
            print(submission.title)

if __name__ == "__main__":
    asyncio.run(amain())

如果不想用上下文管理器,也可以在函数末尾显式调用await reddit.close()来关闭会话:

async def amain():
    reddit = asyncpraw.Reddit(...)
    try:
        # 你的业务代码
        subreddit = await reddit.subreddit("test")
        async for submission in subreddit.hot(limit=10):
            print(submission.title)
    finally:
        await reddit.close()

2. 修复RuntimeError: Event loop is closed与DeprecationWarning

你之前替换的get_event_loop()方式已被Python官方弃用,在3.10+版本中会触发警告,且容易导致事件循环管理混乱。直接用asyncio.run(amain())即可——这是Python 3.7+推荐的异步程序启动方式,它会自动创建、运行并清理事件循环,只要保证Reddit客户端被正确关闭(用上面的方法),就不会再出现事件循环关闭的错误。

3. 残留SSL错误的额外处理

如果SSL传输错误仍然存在,大概率是依赖的aiohttp版本过低导致的兼容性问题,执行以下命令升级:

pip install --upgrade aiohttp

内容的提问来源于stack exchange,提问作者Patientes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 10:42:27