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

使用asyncpraw调用Reddit API遇await语法错误及后续问题求助

问题分析

  1. 第一个错误:await关键字不能直接写在全局代码里,必须放在异步函数内部执行。你直接在全局作用域使用await reddit.subreddit(...),Python会提示await只能在异步函数中调用。
  2. 第二个错误:异步函数getSubreddit()直接调用后返回的是协程对象,不是实际的Subreddit实例,必须用await获取结果,但await依然不能在全局使用,所以得把所有异步逻辑封装到一个异步函数里,再通过异步运行器触发执行。

正确代码示例

import asyncpraw
import asyncio

async def main():
    reddit = asyncpraw.Reddit(
        client_id="CLIENT_ID",
        client_secret="CLIENT_SECRET",
        user_agent="USER_AGENT",
    )
    print(reddit.read_only)

    subreddit = await reddit.subreddit("ProgrammerHumor")
    async for submission in subreddit.hot(limit=10):
        print(submission.title)
    
    await reddit.close()  # 结束时关闭客户端连接,释放资源

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

关键说明

  • 所有异步操作都放到main()这个异步函数里,保证await能正常工作。
  • 用asyncio.run(main())启动整个异步程序,这是Python 3.7+官方推荐的异步代码运行方式。
  • 最后调用await reddit.close(),避免遗留无效连接占用资源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 19:25:27