python取消任务的方法_python-即使忽略CancelledError,如何取消任务执...
這是取消任務的示例:
import asyncio
async def some_func():
await asyncio.sleep(2)
print('Haha! Task keeps running!')
await asyncio.sleep(2)
async def cancel(task):
await asyncio.sleep(1)
task.cancel()
async def main():
func_task = asyncio.ensure_future(some_func())
cancel_task = asyncio.ensure_future(cancel(func_task))
try:
await func_task
except asyncio.CancelledError:
print('Task cancelled as expected')
if __name__ == "__main__":
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
# Task cancelled as expected
# [Finished in 1.2s]
正常,任務已取消.如果在some_func任務中捕獲的CancelledError不會被取消:
async def some_func():
try:
await asyncio.sleep(2)
except:
pass
print('Haha! Task keeps running!')
await asyncio.sleep(2)
# Haha! Task keeps running!
# [Finished in 3.2s]
可能很容易忘記我不應該在異步代碼內的任何地方抑制異常(例如,some_func可以是第三方代碼),但是應該取消任務.反正我能做到嗎?還是忽略了CancelledError意味著根本無法取消任務?
總結
以上是生活随笔為你收集整理的python取消任务的方法_python-即使忽略CancelledError,如何取消任务执...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: django弹出对话框_Django实现
- 下一篇: 微信小程序富文本解析点击图片放大_微信小