Python3 asyncio:并行协同程序意外阻塞

时间:2018-02-26 00:21:30

标签: python python-asyncio

我试图让两个函数(协同程序)与共享阅读器并行工作,来自单个开放网络连接的编写器流如下:

reader, writer = yield from asyncio.open_connection(
                    host, port, ssl=sc, loop=loop)

一旦连接打开,我可以在两个while循环中共享它,如下所示:

@asyncio.coroutine
def rvcr(loop)
    while True:
        data = yield from reader.readline()
        # do something with it

@asyncio.coroutine
def xmtr(loop)
    while True:
        # get some data
        writer.write(data)

现在我想安排它们在循环中运行但不会相互阻塞。我已经阅读了很多例子,但是由于某种原因,asyncio让我很困惑。

一些例子显示

loop = asyncio.get_event_loop()
asyncio.async(rcvr(loop))
asyncio.async(xmtr(loop))
loop.run_forever()

但是rcvr功能块,我似乎无法正确传递读写器。我认为这不是一件容易的事,但出于某种原因我失败了。

任何人都可以帮忙。

0 个答案:

没有答案