tornado.concurrent 与之共事 Future 物体

使用的实用程序 Future 物体。

Tornado 以前提供了自己的 Future 类,但现在使用 asyncio.Future . 此模块包含用于处理的实用程序功能 asyncio.Future 在某种程度上是向后兼容 Tornado 的旧 Future 实施。

虽然此模块是Tornado内部实现的重要组成部分,但应用程序很少需要直接与之交互。

class tornado.concurrent.Future

tornado.concurrent.Future 是一个别名 asyncio.Future .

在 Tornado 中,应用程序与 Future 对象是 awaitingyielding 它们在协程中,而不是在 Future 对象本身。有关可用方法的详细信息,请参见 asyncio.Future 博士学位。

在 5.0 版更改: Tornado 的实施 Future 已被中的版本替换 asyncio 何时可用。

  • Future objects can only be created while there is a current IOLoop

  • 按计划的回调时间 Future.add_done_callback 改变了。

  • 现在部分支持取消(仅在python 3上)

  • 这个 exc_infoset_exc_info 方法在Python3上不再可用。

tornado.concurrent.run_on_executor(*args: Any, **kwargs: Any) Callable[源代码]

decorator在执行器上异步运行同步方法。

返回未来。

要使用的执行者由 executor 属性 self . 若要使用其他属性名,请将关键字参数传递给decorator::

@run_on_executor(executor='_thread_pool')
def foo(self):
    pass

这个修饰器不应该与同名的 IOLoop.run_in_executor . 一般来说,使用 run_in_executor 什么时候? 打电话定义 一种方法。如果需要与旧版Tornado兼容,请考虑定义执行器并使用 executor.submit() 在呼叫地点。

在 4.2 版更改: 添加关键字参数以使用可选属性。

在 5.0 版更改: 总是使用当前的IOLoop而不是 self.io_loop .

在 5.1 版更改: 返回A Future 兼容 await 而不是 concurrent.futures.Future .

5.1 版后已移除: 这个 callback 参数已弃用,将在6.0中删除。新代码不鼓励使用decorator本身,但在6.0中不会删除它。

在 6.0 版更改: 这个 callback 参数已删除。

tornado.concurrent.chain_future(a: Future[_T], b: Future[_T]) None[源代码]

把两个未来连在一起,这样当一个完成时,另一个也完成了。

结果(成功或失败) a 将复制到 b 除非 b 到目前为止已完成或取消 a 完成。

在 5.0 版更改: 现在接受Tornado/Asyncio Future 对象和 concurrent.futures.Future .

tornado.concurrent.future_set_result_unless_cancelled(future: Union[futures.Future[_T], Future[_T]], value: tornado.concurrent._T) None[源代码]

设置给定 value 作为 Future 的结果,如果不取消。

避免 asyncio.InvalidStateError 打电话时 set_result() 被取消的 asyncio.Future .

5.0 新版功能.

tornado.concurrent.future_set_exception_unless_cancelled(future: Union[futures.Future[_T], Future[_T]], exc: BaseException) None[源代码]

设置给定 exc 作为 Future 例外。

如果将来已经取消,则记录异常。如果不需要此日志记录,则调用方应显式检查将来的状态并调用 Future.set_exception 而不是这个包装。

避免 asyncio.InvalidStateError 打电话时 set_exception() 被取消的 asyncio.Future .

6.0 新版功能.

tornado.concurrent.future_set_exc_info(future: Union[futures.Future[_T], Future[_T]], exc_info: Tuple[Optional[type], Optional[BaseException], Optional[types.TracebackType]]) None[源代码]

设置给定 exc_info 作为 Future 例外。

理解两者 asyncio.Future 以及旧版Tornado中的扩展,以便更好地跟踪python 2。

5.0 新版功能.

在 6.0 版更改: 如果未来已经取消,则此功能为“不可操作”(以前 asyncio.InvalidStateError 将被提升)

tornado.concurrent.future_add_done_callback(future: futures.Future[_T], callback: Callable[[futures.Future[_T]], None]) None[源代码]
tornado.concurrent.future_add_done_callback(future: Future[_T], callback: Callable[[Future[_T]], None]) None

安排呼叫 callback 什么时候? future 是完整的。

callback 用一个参数调用, future .

如果 future 已经完成了, callback 立即调用。这可能与 Future.add_done_callback 不作这样的保证。

5.0 新版功能.