用法:
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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。