tornado小巧精悍,功能有很强,代码也很难看懂啊。好难, 哈哈哈
Future
Future是一个对象。用来保存异步操作的结果, 在异步应用中Futures被用来等待一个线程或进程池的结果 Tornado中主要是在IOLoop.add_future或在gen.coroutine中yield。
def __init__(self): self._done = False 标志是否结束 self._result = None 保存结果 self._exc_info = None self._log_traceback = False # Used for Python >= 3.4 self._tb_logger = None # Used for Python <= 3.3 self._callbacks = [] 结束后回调的函数
Future并不支持cancle, 所以,cancelled和cancell都是直接返回了False
running(): 是否还在执行 return not self._done
done(): 是否结束 return self._done
result(timeout=None): 如果操作正常结束,直接返回self._result, 否则将抛出异常, timeout参数没有使用
exception(timeout=None): 如果异步操作抛出异常,该函数直接返回一个Exception对象,否则如果没有结束的话,将抛出异常,若结束则返回None
add_done_callback(fn): 添加一个回调函数, 如果此时操作已经结束,将直接调用,否则将添加到_callbacks属性中, 结束后调用
set_result(result) 设置Future要保存的结果,并标志位done, 标志位done时会遍历_callbacks, 一次调用回调函数
set_exc_info()设置exception信息