2016-09-30 2 views
0

토네이도 이벤트 루프를 사용하는 응용 프로그램에서 prompt_toolkit을 사용하려고하는데 정확한 방법을 사용하여 prompt_toolkit 프롬프트를 이벤트 루프에 추가 할 수 없습니다.토네이도 이벤트 루프에서 prompt_toolkit을 어떻게 호출 할 수 있습니까?

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 

는 그러나, 나는이를

prompt_toolkit 문서는 asyncio에서 사용의 예 (Asyncio Docs)가 토네이도 이벤트 루프에서 작동하지 못했습니다. 나는 다음을 시도했다 :

이것은 초기 프롬프트를 표시하지만 콘솔을 차단하는 것으로 나타난다.

나는 또한 시도 :

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, tornado 4.3을 사용하고 있습니다.

답변

0

Tornado's asyncio integration을 사용하려면 토네이도에 asyncio 이벤트 루프를 사용하도록 지시해야합니다. 일반적으로 이는 앱을 시작할 때 이렇게하는 것을 의미합니다.

from tornado.platform.asyncio import AsyncIOMainLoop 
AsyncIOMainLoop().install() 
관련 문제