Я пытаюсь использовать prompt_toolkit из приложения, которое использует цикл событий торнадо, но я не могу правильно сформулировать приглашение prompt_toolkit к циклу событий.Как я могу вызвать prompt_toolkit из цикла событий торнадо?
Документация prompt_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()
Я явно не понимая чего-то здесь.
Может ли кто-нибудь осветить, как это сделать?
Я использую: Python 3.5.0, торнадо 4.3.