asyncio.wait_for不会传播CancelledError,如果在取消之前等待的future已经“完成”。
创始人
2024-09-21 06:00:58
0

由于asyncio.wait_for函数不会在future已经完成时传播CancelledError,因此需要通过手动取消任务来解决此问题。以下是一个使用asyncio.wait_for函数的示例,其中包括手动取消任务的代码:

import asyncio

async def slow_operation():
    await asyncio.sleep(5)
    return 42

async def main():
    task = asyncio.ensure_future(slow_operation())
    try:
        result = await asyncio.wait_for(task, timeout=3)
        print(result)
    except asyncio.TimeoutError:
        task.cancel()
        await asyncio.wait([task])
        print("Operation cancelled")

asyncio.run(main())

在上述示例中,slow_operation函数表示一个耗时操作。我们使用asyncio.ensure_future将其转换为一个Future对象,然后将其传递给asyncio.wait_for函数。为了在超时发生时取消任务,我们使用try-except语句捕获asyncio.TimeoutError异常,并在异常处理程序中调用task.cancel()。最后,我们使用asyncio.wait函数等待任务完成,并在完成后打印出消息。

请注意,我们需要使用asyncio.run函数来运行主函数。

相关内容

热门资讯

出乎意料的是!闲聚大联盟辅助&... 出乎意料的是!闲聚大联盟辅助"一直确实有辅助软件"(哔哩哔哩)1、打开软件启动之后找到中间准星的标志...
出乎意料的是!闲玩暗宝插件&q... 出乎意料的是!闲玩暗宝插件"竟然是真的有辅助插件"(哔哩哔哩)出乎意料的是!闲玩暗宝插件"竟然是真的...
2026版辅助挂!新九哥破解版... 2026版辅助挂!新九哥破解版"一贯存在有辅助神器"(哔哩哔哩)1、每一步都需要思考,不同水平的挑战...
无独有偶!火神大厅外g挂&qu... 无独有偶!火神大厅外g挂"一直真的是有辅助器"(哔哩哔哩)1、火神大厅外g挂辅助软件下载优化,火神大...
做出回应!兴动互娱辅助工具靠谱... 做出回应!兴动互娱辅助工具靠谱吗"都是存在有辅助软件"(哔哩哔哩)1、完成兴动互娱辅助工具靠谱吗有辅...
据悉!广西老友玩辅助"... 您好,广西老友玩辅助这款游戏可以开挂的,确实是有挂的,需要了解加去威信【136704302】很多玩家...
这一现象值得深思!菠萝辅助平台... 这一现象值得深思!菠萝辅助平台"好像是真的有辅助挂"(哔哩哔哩)1、玩家可以在菠萝辅助平台线上大神俱...
连日来!闲逸碰免费下载&quo... 连日来!闲逸碰免费下载"其实存在有辅助器"(哔哩哔哩)1、每一步都需要思考,不同水平的挑战会更加具有...
围绕透视问题!永久免费脚本透视... 围绕透视问题!永久免费脚本透视工具"一直是真的有辅助教程"(哔哩哔哩)1、操作简单,无需永久免费脚本...
据了解!河洛杠次辅助"... 据了解!河洛杠次辅助"好像是真的有辅助教程"(哔哩哔哩)1、进入到河洛杠次辅助是否有挂之后,能看到左...