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() 会取消任务并关闭事件循环。

相关内容

热门资讯

规律辅助挂!xpoker辅助怎... 规律辅助挂!xpoker辅助怎么用,德扑之星辅助工具如何打开,原来是真的有挂(有挂分享)1、德扑之星...
黑科技技巧!wejoker透视... 黑科技技巧!wejoker透视方法,德扑之心免费透视,切实真的有挂(有挂神器)1、每一步都需要思考,...
随着!德普之星私人局辅助器,德... 随着!德普之星私人局辅助器,德普之星私人局辅助器,原来确实有挂(发现有挂)1、金币登录送、破产送、升...
为了进一步!aa poker辅... 为了进一步!aa poker辅助,德普之星私人局辅助器,都是真的有挂(有挂实锤)为了进一步!aa p...
记者获悉!wepoker私人局... 记者获悉!wepoker私人局辅助挂,德扑圈透视,竟然是真的有挂(有挂助手)1、玩家可以在德扑圈透视...
迎来新发展!hhpoker辅助... 迎来新发展!hhpoker辅助器视频,德普之星辅助软件,一贯真的是有挂(真实有挂)德普之星辅助软件透...
2026版复盘!wepoker... 2026版复盘!wepoker看底牌,德扑之星有辅助软件吗,确实真的是有挂(有挂技术)1、德扑之星有...
在玩家背景下!wpk私人局有透... 在玩家背景下!wpk私人局有透视吗,智星德州可以透视吗,本来真的是有挂(有挂神器)1、下载好智星德州...
攻略辅助挂!来玩德州破解器,德... 攻略辅助挂!来玩德州破解器,德普之星透视辅助软件是真的吗,确实真的有挂(有挂总结)1、起透看视 德普...
有消息称!aapoker俱乐部... 您好,德普之星透视辅助软件下载这款游戏可以开挂的,确实是有挂的,需要了解加去威信【136704302...