asyncio: 异常时停止协程
创始人
2024-09-21 06:02:27
0

在使用asyncio库时,可以通过捕获异常来停止协程的执行。下面是一个包含代码示例的解决方法:

import asyncio

async def my_coroutine():
    try:
        while True:
            # 执行一些操作
            await asyncio.sleep(1)
    except asyncio.CancelledError:
        # 在捕获到CancelledError异常时停止协程的执行
        print("协程被取消")

async def main():
    # 创建一个协程对象
    coro = my_coroutine()

    # 创建一个事件循环对象
    loop = asyncio.get_event_loop()

    try:
        # 运行协程直到完成或者被取消
        await asyncio.wait_for(coro, timeout=5)
    except asyncio.TimeoutError:
        # 在超时时取消协程的执行
        coro.cancel()
        await coro

    # 关闭事件循环
    loop.close()

# 运行主函数
asyncio.run(main())

在上述代码中,my_coroutine是一个简单的协程函数,它会不断执行一些操作并等待1秒钟。当捕获到CancelledError异常时,协程会停止执行。

main函数中,首先创建了一个协程对象coro和一个事件循环对象loop。然后使用asyncio.wait_for函数来运行协程,设置了一个超时时间为5秒。如果在超时时间内协程没有完成,就会抛出TimeoutError异常,然后调用coro.cancel()来取消协程的执行。最后,使用await来等待协程执行完毕。

最后,调用asyncio.run(main())来运行主函数。这会创建一个新的事件循环并运行main函数,直到完成。在完成后,事件循环会自动关闭。

相关内容

热门资讯

详细说明!九游破解辅助插件hh... 详细说明!九游破解辅助插件hhpoker,微友助手破解版,2026版教程(有挂教学)-哔哩哔哩;人气...
每日必看推荐!中至吉安黑科技,... 每日必看推荐!中至吉安黑科技,掌中乐游戏中心破解版,wpk教程(真实有挂)-哔哩哔哩;最新版2026...
玩家交流!财神13章辅助码大全... 玩家交流!财神13章辅助码大全,友友联盟辅助器,插件教程(有挂神器)-哔哩哔哩;1、点击下载安装,财...
终于知道!浙江游戏大厅游戏辅助... 终于知道!浙江游戏大厅游戏辅助器,新518互游脚本下载,新2026教程(有挂技巧)-哔哩哔哩;浙江游...
科技介绍!丽水都莱辅助工具,玉... 科技介绍!丽水都莱辅助工具,玉海楼茶苑辅助工具,教你攻略(有挂秘籍)-哔哩哔哩;最新版2026是一款...
必看攻略!钱塘十三水透视卦,反... 【福星临门,好运相随】;必看攻略!钱塘十三水透视卦,反杀新火神辅助,玩家教你(有挂方式)-哔哩哔哩;...
推荐一款!四川途游辅助软件,新... 推荐一款!四川途游辅助软件,新道游app辅助器,爆料教程(有挂技术)-哔哩哔哩;一、四川途游辅助软件...
科普攻略!中至九江都昌讨赏辅助... 科普攻略!中至九江都昌讨赏辅助,四川游戏家园辅助软件下载,靠谱教程(有挂细节)-哔哩哔哩;超受欢迎的...
玩家必看科普!新518互游插件... 玩家必看科普!新518互游插件下载,杭州边锋辅助软件,存在挂教程(新版有挂)-哔哩哔哩;是一款可以让...
一分钟教会你!四川家园游戏辅助... 一分钟教会你!四川家园游戏辅助软件,福建天天开心辅助真实性,攻略教程(有挂教学)-哔哩哔哩;1、不需...