如何取消asyncio的loop.call_later?

问题描述

如果我schedule a callback using loop.call_later()(或使用loop.call_at(),其行为方式相同),是否可以取消执行?

为什么?假设我安排从现在开始运行一分钟。但是,由于某种条件,代码决定中止该执行(因为不再需要执行),或者决定重新安排其执行时间。问题是如何使用Python的asyncio来实现它?

如果您熟悉JavaScript,那么我正在寻找setTimeout()clearTimeout()的等同版本。

解决方法

通过您链接的docs

返回asyncio.TimerHandle的实例,该实例可用于取消回调。

asyncio.Handle的{​​{3}}到asyncio.TimerHandle的超类:

取消()

取消回调。如果回调已被取消或执行,则此方法无效。

因此只需调用该句柄的cancel方法。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...