Quart в сочетании с клиентом NATS.io

Я пытаюсь запустить клиент QUART и NATS в одном приложении. Используя этот код для NAT часть [https://github.com/nats-io/stan.py/issues/12#issuecomment-400865266][1]

Моя основная функция содержит:

    asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())
    loop = asyncio.new_event_loop()
    asyncio.set_event_loop(loop)

    loop.run_until_complete(serve(app, config))
    loop.run_until_complete(run_nats(loop))
    loop.close()

Но он просто запускает QUART, а nats заблокирован. Как я могу это решить?

Информация:

  • Питон 3.9
  • asyncio-nats-клиент 0.11.4
  • Кварта 0.11.4

person aschoenenberg    schedule 19.03.2021    source источник


Ответы (1)


Строка loop.run_until_complete будет выполняться и блокироваться до тех пор, пока не завершится, в данном случае выполняется сначала Quart (пока не завершится), а затем nats. Чтобы запустить оба одновременно, я обычно использую gather,

loop.run_until_complete(asyncio.gather(serve(app, config), run_nats(loop))
person pgjones    schedule 19.03.2021