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

Python3.8环境下AsyncElasticsearch使用RequestsHttpConnection的tuple不可await报错求助

报错根因
  • AsyncElasticsearch 是全异步链路实现的ES客户端,内部传输层执行请求时会对连接对象的perform_request方法做await操作,要求该方法必须返回可等待的协程对象。
  • RequestsHttpConnection 是纯同步逻辑实现的HTTP连接类,它的perform_request是同步方法,直接返回(status, headers, data)格式的普通元组,并非协程对象,绑定到异步客户端上就会直接触发当前类型错误。
解决操作
  • 替换为异步配套连接类:禁止给AsyncElasticsearch传入同步的RequestsHttpConnection,改用官方提供的异步连接实现AioHttpConnection,初始化代码示例:
    from elasticsearch import AsyncElasticsearch
    from elasticsearch.connection import AioHttpConnection
    
    es = AsyncElasticsearch(
        hosts=["ES节点地址"],
        connection_class=AioHttpConnection
    )
    
  • 依赖版本校验:检查当前环境安装的elasticsearch包和aiohttp包版本是否匹配,避免因为异步连接初始化抛错,客户端自动降级使用同步连接实现的异常场景。
  • 自定义连接适配:如果有自定义连接逻辑的需求,必须将连接类的perform_request方法改造为async异步方法,保证方法返回协程对象,不能直接返回同步逻辑产出的元组结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 07:45:03