代码之家  ›  专栏  ›  技术社区  ›  yoonghm

在Python asyncio模块中创建\u connection()方法

  •  1
  • yoonghm  · 技术社区  · 7 年前

    文件提到 AbstractEventLoop.create_connection (transport, protocol) 元组。然而 all the examples

    这个 code 也表明它确实回来了 (传输,协议) 元组。你能帮忙吗?

    1 回复  |  直到 7 年前
        1
  •  2
  •   user4815162342    7 年前

    create_connection 是一个协程函数,它返回一个传输、协议对。但是要获得这个返回值,你需要 await async def )或使用 loop.run_until_complete (如果在同步代码中)。

    如果你只是 呼叫 for

    许多示例实际上并不需要返回值,因此它们只将返回的协程对象存储在局部变量中 coro 然后跑 run_until_complete(coro) ,有效地丢弃返回的传输/协议对。完整用法如中所示 19.5.4.3.5 :

    connect_coro = loop.create_connection(MyProtocol, sock=rsock)
    transport, protocol = loop.run_until_complete(connect_coro)
    

    transport, protocol = loop.run_until_complete(
        loop.create_connection(MyProtocol, sock=rsock))
    

    这就更清楚了 创建\u连接 返回一对,并且您需要 run_until_complete 等待 )要访问它,后面的每一个协程或异步将来都是如此。