我正在尝试将多条消息异步发送到websocket服务器。 我使用的代码(为清晰起见,请缩短):
class Bitfinex(object):
def __init__(self, session):
self.ws_conn = session.ws_connect(self.WS_URL)
async def subscribe(self):
tasks = [
self.ws_conn.send_json(self.SUB_MESG.update({'prec': self.PREC_MAP[pair], 'pair': pair}))
for pair in self.PAIRS
]
await asyncio.wait(tasks)
res = self.ws_conn.receive()
self.logger.debug('Subscribe result: {}'.format(res.data))
驱动程序脚本:
^{pr2}$ws_conn对象的正确初始化应符合aiohttp文档async with session.ws_connect(ws_url) as ws_conn:
。该语句将ws_conn
作为ClientWebSocketResponse
对象返回。我试图在没有上下文管理器的情况下初始化ws_conn
,但是得到了没有send_json()
方法的_WSRequestContextManager
类型。在没有上下文管理器和直接ClientWebSocketResponse
初始化的情况下,如何获得正确的对象?在
ws_connect是一个协程,因此您需要等待它的结果
但是不能在协程之外使用await表达式,因此需要将其从
__init__
方法中移动相关问题 更多 >
编程相关推荐