asyncio中止/暂停
在asyncio中止/暂停的过程中,可以使用coroutine的取消(cancellation)机制,即使用asyncio.Task.cancel()
方法将coroutine任务取消,并在取消后处理异常。如下所示:
import asyncio
import time
async def long_running_task():
print("Start long running task")
await asyncio.sleep(5)
print("End long running task")
async def main():
task = asyncio.create_task(long_running_task())
await asyncio.sleep(2)
task.cancel()
try:
await task
except asyncio.CancelledError:
print("Task cancelled")
asyncio.run(main())
在上面的代码中,我们创建了一个long_running_task
函数,并在main
函数中创建了一个task,并在2秒后通过task.cancel()
方法将其取消。在接下来的try
语句块中,我们处理了由task.cancel()
引发的asyncio.CancelledError
异常,并在except
语句块中输出“Task cancelled”消息。
运行上面的代码,输出结果将类似于以下内容:
Start long running task
Task cancelled