如何偶尔在 Tornado 应用程序中使用线程和期货?
我的服务器偶尔需要在单独的线程或进程中运行长时间运行的任务(该任务释放 GIL。)我想使用 concurrent.futures 执行器来执行此操作
from concurrent.futures import ThreadPoolExecutor
executor = ThreadPoolExecutor(10)
future = executor.submit(func, *args, **kwargs)
如何将这个未来集成到 Tornado 事件循环中?理想情况下,这种集成与tornado.gen
协程配合得很好。我想从未来中屈服,而不是阻碍它。实现这一目标的最佳方法是什么?
理想情况下,我想从concurrent
Future
.
我正在寻找f
使以下成为可能的功能
@gen.coroutine
def my_coroutine(...)
...
future = executor.submit(func, *args, **kwargs)
result = yield f(future)