异步三坑
异步三坑
1. 论cancel
asyncio.CancelledError 简直是神出鬼没,任何await的地方都可能冒出来,对他们的恰当处理是重中之重
2. 论Future
Future.set_result() 和 Future.set_exception() 这两个方法是Future的核心,然而,调用的时候是否判断了他的状态? 如果Future已经完成了,再调用set_result()或者set_exception(),就会抛出InvalidStateError, 与上一个坑结合起来,await future的时候被cancel了,抛出CancelledError,future的状态已经是cancelled,这时候就不能再对future搞事了。