提问人:winwin 提问时间:11/13/2023 更新时间:11/13/2023 访问量:23
异步。任务cancel() 如果任务不在事件循环中,则不会取消任务 [duplicate]
asyncio.Task cancel() does not cancel the task if it's not in event loop [duplicate]
问:
我偶然发现了 Python 的一个相当违反直觉的行为。版本是 3.10.12,Ubuntu 22.04。
请考虑以下脚本:
import asyncio
async def main():
t = asyncio.create_task(asyncio.sleep(5))
t.cancel()
print(t.cancelled())
await asyncio.sleep(0)
print(t.cancelled())
if __name__ == "__main__":
asyncio.run(main())
它写道:
False
True
不应该写吗
True
True
相反?
我假设任务必须首先提交到事件循环,然后才能取消。但这真的不是一个错误吗?无论如何,我都不应该取消任务吗?
答: 暂无答案
评论