Python 哪个协同程序是顺序的?

Python 哪个协同程序是顺序的?,python,mqtt,python-asyncio,Python,Mqtt,Python Asyncio,我正在研究HBMQTT文档,有两个函数做同样的事情,基本上是将3条消息发布到MQTT代理: @asyncio.coroutine def test_coro(): C = MQTTClient() yield from C.connect('mqtt://test.mosquitto.org/') tasks = [ asyncio.ensure_future(C.publish('a/b', b'TEST MESSAGE WITH QOS_0')),

我正在研究HBMQTT文档,有两个函数做同样的事情,基本上是将3条消息发布到MQTT代理:

@asyncio.coroutine
def test_coro():
    C = MQTTClient()
    yield from C.connect('mqtt://test.mosquitto.org/')
    tasks = [
        asyncio.ensure_future(C.publish('a/b', b'TEST MESSAGE WITH QOS_0')),
        asyncio.ensure_future(C.publish('a/b', b'TEST MESSAGE WITH QOS_1', qos=QOS_1)),
        asyncio.ensure_future(C.publish('a/b', b'TEST MESSAGE WITH QOS_2', qos=QOS_2)),
    ]
    yield from asyncio.wait(tasks)
    logger.info("messages published")
    yield from C.disconnect()


@asyncio.coroutine
def test_coro2():
    try:
        C = MQTTClient()
        ret = yield from C.connect('mqtt://test.mosquitto.org:1883/')
        message = yield from C.publish('a/b', b'TEST MESSAGE WITH QOS_0', qos=QOS_0)
        message = yield from C.publish('a/b', b'TEST MESSAGE WITH QOS_1', qos=QOS_1)
        message = yield from C.publish('a/b', b'TEST MESSAGE WITH QOS_2', qos=QOS_2)
        #print(message)
        logger.info("messages published")
        yield from C.disconnect()
    except ConnectException as ce:
        logger.error("Connection failed: %s" % ce)
        asyncio.get_event_loop().stop()
文件接着将其描述为:

test_coro()按顺序发布3条消息。test_coro2()异步发布相同的消息


这毫无意义,因为我也一直在研究
asyncio
,据我所知
sure_future()
将任务安排为异步运行,而
中产生的收益似乎与
wait
的目的相同,因此,这些语句中的每一条都将简单地阻塞,直到任务完成。因此,描述应该是相反的。我是对的还是遗漏了什么?

是的,协同程序的名称被交换了,应该是相反的

此外:代码已经过时。 i、 e

  • 无需再将函数标记为具有此类装饰器的协同程序,只需使用
    async
    关键字即可

  • 使用
    wait
    而不是
    yield from