如何取消asyncio的loop.call_later()?

How to cancel asyncio's loop.call_later()?

如果我schedule a callback using loop.call_later()(或loop.call_at(),行为相同),是否可以取消它的执行?

为什么?假设我在一分钟后 运行 安排了一些事情。但是,由于某些情况,代码决定中止该执行(因为不再需要它),或者决定将其重新安排到另一个时间。问题是如何使用 Python 的 asyncio?

来实现它

如果您熟悉 JavaScript,我正在寻找 setTimeout()clearTimeout() 的等价物。

来自您链接的docs

An instance of asyncio.TimerHandle is returned which can be used to cancel the callback.

并且来自 asyncio.Handledocsasyncio.TimerHandle 的超类:

cancel()

Cancel the callback. If the callback has already been canceled or executed, this method has no effect.

所以只需调用句柄的cancel方法即可。