- from tornado.concurrent import Future
-
- def async_call_method(fun, *args, **kwargs):
- future = Future()
- // 定义一个闭包 finish
- def finish():
- try:
- result = fun(*args, **kwargs)
- if future._callbacks:
- IOLoop.current().add_callback(future.set_result, result)
- else:
- future.set_result(result)
- except:
- if future._callbacks:
- IOLoop.current().add_callback(future.set_exc_info, sys.exc_info())
- else:
- future.set_exc_info(sys.exc_info())
- child_gr = greenlet.greenlet(finish)
- child_gr.switch()
- return future
tornado 相关官方文档
Future 是一种用于并发编程的模式,首次引入是在 python 3.2 的 concurrent.futures 模块。
Future 对象是一个对于异步返回结果的占位符。
一个 Future 对象包含了一次异步操作的结果。在同步编程中,Futures 被用于等待从一个线程池或进程池里返回的结果;在 tornado 中,future 通常被用在