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

Python Websockets报错'Connect' object has no attribute 'send'如何解决

报错原因

你使用的websockets是基于asyncio的异步Python库,websockets.connect()方法本身不会直接返回可用的WebSocket连接对象,它返回的是异步上下文管理器实例,你直接赋值得到的ws是Connect类型对象,自然不存在send方法。同时你的现有代码完全没有遵循异步编程的语法要求,没有异步运行环境支撑也无法正常执行WebSocket相关操作。

修复方案

按照异步编程规范调整代码即可,参考可运行的代码如下:

import asyncio
import websockets

async def run_client():
    # 通过异步上下文管理器获取真实WebSocket连接实例
    async with websockets.connect('ws://localhost:6789') as ws:
        # 异步方法调用需要添加await关键字
        await ws.send('asdf')
        # 若需要接收服务端返回可使用await ws.recv()
        # resp = await ws.recv()
        # print(f"收到响应:{resp}")

if __name__ == "__main__":
    # 启动异步事件循环执行客户端逻辑
    asyncio.run(run_client())

核心修改点如下:

  • 引入asyncio库提供异步运行环境,所有WebSocket交互逻辑封装在async修饰的异步函数中
  • 使用async with语法调用websockets.connect(),此时获取的ws才是具备send、recv方法的可用连接对象
  • 调用send、recv这类异步方法时必须在前添加await关键字,等待异步操作执行完成
  • 最后通过asyncio.run()启动异步事件循环,执行客户端逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 15:54:05