问题描述
如果我schedule a callback using loop.call_later()
(或使用loop.call_at()
,其行为方式相同),是否可以取消执行?
为什么?假设我安排从现在开始运行一分钟。但是,由于某种条件,代码决定中止该执行(因为不再需要执行),或者决定重新安排其执行时间。问题是如何使用Python的asyncio
来实现它?
如果您熟悉JavaScript,那么我正在寻找setTimeout()
和clearTimeout()
的等同版本。
解决方法
通过您链接的docs:
返回
asyncio.TimerHandle
的实例,该实例可用于取消回调。
从asyncio.Handle
的{{3}}到asyncio.TimerHandle
的超类:
取消()
取消回调。如果回调已被取消或执行,则此方法无效。
因此只需调用该句柄的cancel
方法。