asyncio运行\u直到\u完成给出runtimeerror

qrjkbowd  于 2021-08-20  发布在  Java
关注(0)|答案(0)|浏览(185)

我正在尝试运行一个简单的 asyncio 我想持续运行的循环,直到按下control+c,这将停止主功能并运行一个关闭循环的功能。我正在使用以下代码:

import asyncio

async def run():
    while True:
        print("Running")

async def shutdown():
    print("Starting to shutdown")
    await asyncio.sleep(1)
    print("Finished sleeping")

try:
    loop = asyncio.get_event_loop()
    loop.create_task(run())
    loop.run_forever()
except KeyboardInterrupt:
    loop.stop()
    loop.run_until_complete(asyncio.gather(*[shutdown()]))

当运行此代码并按control+c时,脚本不会像我预期的那样正常关闭(也基于此stackoverflow答案,但我得到以下错误: RuntimeError: Event loop stopped before Future completed. 谁能告诉我哪里出了问题,我应该如何修改代码来解决这个问题?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题