tornado.concurrent
与之共事 Future
物体¶
使用的实用程序 Future
物体。
Tornado 以前提供了自己的 Future
类,但现在使用 asyncio.Future
. 此模块包含用于处理的实用程序功能 asyncio.Future
在某种程度上是向后兼容 Tornado 的旧 Future
实施。
虽然此模块是Tornado内部实现的重要组成部分,但应用程序很少需要直接与之交互。
- class tornado.concurrent.Future¶
tornado.concurrent.Future
是一个别名asyncio.Future
.在 Tornado 中,应用程序与
Future
对象是awaiting
或yielding
它们在协程中,而不是在Future
对象本身。有关可用方法的详细信息,请参见asyncio.Future
博士学位。
- 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 新版功能.