我正试图从使用tornado事件循环的应用程序中使用prompt\u toolkit,但我无法找到将prompt\u toolkit prompt添加到事件循环的正确方法。你知道吗
prompt\u toolkit文档有一个在asyncio(Asyncio Docs)中使用它的示例:
from prompt_toolkit.shortcuts import prompt_async
async def my_coroutine():
while True:
result = await prompt_async('Say something: ', patch_stdout=True)
print('You said: %s' % result)
我已经成功地通过asyncio事件循环实现了这一点:
import asyncio
l = asyncio.get_event_loop()
l.create_task(my_coroutine())
l.run_forever()
Say something: Hello
You said: Hello
然而,我没能使它从龙卷风事件循环工作。我尝试了以下方法:
from tornado.ioloop import IOLoop
IOLoop.current().run_sync(my_coroutine)
这将发出初始提示,但随后会阻止控制台。你知道吗
我也尝试过:
IOLoop.current().add_callback(my_coroutine)
IOLoop.current().start()
这会执行相同的操作,但也会产生错误消息:
RuntimeWarning: coroutine 'my_coroutine' was never awaited
我试过:
IOLoop.current().spawn_callback(my_coroutine)
IOLoop.current().start()
我显然不明白这里有什么。你知道吗
有人能解释一下应该怎么做吗?你知道吗
我正在使用:python3.5.0,tornado 4.3。你知道吗
要使用Tornado's asyncio integration,必须告诉Tornado使用asyncio事件循环。通常,这意味着在应用程序开始时执行以下操作:
相关问题 更多 >
编程相关推荐