我正在尝试编写一个简单的命令行客户端作为 TCP 客户端/服务器系统的包装器。twisted
客户端是使用框架用python编写的。我使用 Python3.6 作为解释器。我发现它prompt_toolkit
有一个asyncio
实现,并尝试使用示例代码将其连接到使用ensureDeferred
. 不幸的是,一旦显示提示,代码就会引发异常。
我是在 python 中使用 asyncio 库工具的新手,所以我不确定我是否遗漏了一些东西。我尝试运行的代码如下:
from twisted.internet import reactor
from twisted.internet.defer import ensureDeferred
from prompt_toolkit import prompt_async
async def my_coroutine():
while True:
result = await prompt_async('Say something: ', patch_stdout=True)
print('You said: %s' % result)
d = ensureDeferred(my_coroutine())
reactor.run()
引发的异常如下:
AssertionError: yield from wasn't used with future
我不确定这是否是 twisted 和 asyncio 之间的根本不兼容,或者我是否缺少连接这两个系统的关键方法。我将不胜感激任何建议。
版本详情:
twisted == 17.9.0
prompt_toolkit == 1.0.15