Enviar tarefas assíncronas para executar em loop em outro encadeamento
Como posso inserir assincronamente tarefas para executar em umasyncio
loop de evento em execução em outro segmento?
Minha motivação é oferecer suporte a cargas de trabalho assíncronas interativas no intérprete. Não consigo bloquear o thread REPL principal.
ExemploMeu entendimento atual falho diz que o seguinte deve funcionar. Por que não? Qual é a melhor maneira de atingir o objetivo acima?
import asyncio
from threading import Thread
loop = asyncio.new_event_loop()
def f(loop):
asyncio.set_event_loop(loop)
loop.run_forever()
t = Thread(target=f, args=(loop,))
t.start()
@asyncio.coroutine
def g():
yield from asyncio.sleep(1)
print('Hello, world!')
asyncio.async(g(), loop=loop)