用法:
cancel(msg=None)
请求取消任务。
这会安排在事件循环的下一个周期将
CancelledError
异常抛出到包装的协程中。然后协程有机会通过使用
try
… …except CancelledError
…finally
块抑制异常来清理甚至拒绝请求。因此,与Future.cancel()
不同,Task.cancel()
不保证任务将被取消,尽管完全抑制取消并不常见,并且积极劝阻。在 3.9 版中更改:添加了
msg
范围。以下示例说明协程如何拦截取消请求:
async def cancel_me(): print('cancel_me(): before sleep') try: # Wait for 1 hour await asyncio.sleep(3600) except asyncio.CancelledError: print('cancel_me(): cancel sleep') raise finally: print('cancel_me(): after sleep') async def main(): # Create a "cancel_me" Task task = asyncio.create_task(cancel_me()) # Wait for 1 second await asyncio.sleep(1) task.cancel() try: await task except asyncio.CancelledError: print("main(): cancel_me is cancelled now") asyncio.run(main()) # Expected output: # # cancel_me(): before sleep # cancel_me(): cancel sleep # cancel_me(): after sleep # main(): cancel_me is cancelled now
相关用法
- Python asyncio.BaseTransport.get_extra_info用法及代码示例
- Python asyncio.shield用法及代码示例
- Python asyncio.run用法及代码示例
- Python asyncio.wait_for用法及代码示例
- Python asyncio.create_task用法及代码示例
- Python asyncio.loop.run_in_executor用法及代码示例
- Python asyncio.Server用法及代码示例
- Python asyncio.Server.serve_forever用法及代码示例
- Python asyncio.Event用法及代码示例
- Python asyncio.gather用法及代码示例
- Python asyncio.sleep用法及代码示例
- Python asyncio.to_thread用法及代码示例
- Python asyncio.Condition用法及代码示例
- Python asyncio.SelectorEventLoop用法及代码示例
- Python asyncio.run_coroutine_threadsafe用法及代码示例
- Python asyncio.Lock用法及代码示例
- Python asyncio.Future.add_done_callback用法及代码示例
- Python asyncio.loop.shutdown_asyncgens用法及代码示例
- Python asyncio.as_completed用法及代码示例
- Python asyncio.Semaphore用法及代码示例
注:本文由纯净天空筛选整理自python.org大神的英文原创作品 asyncio.Task.cancel。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。