asyncio.Event在信号处理程序中未被设置
创始人
2024-09-21 05:00:55
0

在实现信号处理程序的函数中,不能直接设置 asyncio.Event 实例的状态,必须通过调用 asyncio.ensure_future() 来执行协程,并在协程中设置 Event 的状态。以下是一个示例:

import asyncio
import signal

loop = asyncio.get_event_loop()
evt = asyncio.Event()

async def do_work():
    print("Starting work ...")
    await asyncio.sleep(3)
    print("Work finished.")
    evt.set()

async def signal_handler():
    print("Received signal, stopping tasks ...")
    task = asyncio.ensure_future(do_work())
    await evt.wait()
    task.cancel()
    print("All tasks stopped.")
    loop.stop()

async def main():
    # Register the signal handler
    loop.add_signal_handler(signal.SIGINT, lambda: asyncio.ensure_future(signal_handler()))

    # Start main work
    await asyncio.gather(do_work())

if __name__ == "__main__":
    loop.run_until_complete(main())

在上面的示例中,signal_handler() 函数是信号处理程序,它会调用 asyncio.ensure_future() 来启动协程 do_work(),并在协程中设置 Event 的状态。当 Event 的状态被设置后,signal_handler() 会取消任务并关闭事件循环。

相关内容

热门资讯

透视科技!wpk辅助插件,wp... 透视科技!wpk辅助插件,wpk透视插件,手册教程(证实有挂)-哔哩哔哩wpk辅助插件辅助器中分为三...
透视能赢!hhpoker辅助靠... 透视能赢!hhpoker辅助靠谱吗,wepoker怎么设置房间,手段教程(有挂技巧)-哔哩哔哩1、让...
透视好友!wpk刷入池率脚本,... 透视好友!wpk刷入池率脚本,wepoker免费透视,操作教程(有挂技巧)-哔哩哔哩wpk刷入池率脚...
透视脚本!有哪些免费的wpk辅... 透视脚本!有哪些免费的wpk辅助码,wepoker如何设置透视,经验教程(有挂秘笈)-哔哩哔哩在进入...
透视ai代打!如何下载wepo... 透视ai代打!如何下载wepoker安装包,哈糖大菠萝挂,指南书教程(有挂技巧)-哔哩哔哩1、让任何...
透视总结!德普软件,德州来玩辅... 透视总结!德普软件,德州来玩辅助器,法门教程(有挂技术)-哔哩哔哩德州来玩辅助器辅助器中分为三种模型...
透视黑科技!hhpoker德州... 透视黑科技!hhpoker德州机器人,hhpoker到底可以辅助吗,演示教程(有挂攻略)-哔哩哔哩h...
透视规律!哈糖大菠萝挂,德州真... 透视规律!哈糖大菠萝挂,德州真人透视脚本,指南书教程(确实有挂)-哔哩哔哩1、这是跨平台的德州真人透...
透视工具!agpoker辅助,... 透视工具!agpoker辅助,wepoker开辅助能查到吗,经验教程(有挂细节)-哔哩哔哩1、这是跨...
透视系统!wepoker免费脚... 透视系统!wepoker免费脚本咨询,hhpoker真的假的,练习教程(有挂技巧)-哔哩哔哩1、玩家...