在我的工作中,他们“利用”龙卷风,但他们没有异步库。是什么让库变得异步,以便它更适合龙卷风之类的东西?有没有什么好的例子或者我猜你在做什么__enter__
or __exit__
这可以表明您没有阻止?
我发现很难将一些材料拼凑在一起。
如果您的库不是异步的并且不支持在龙卷风 ioloop 中运行,那么您唯一能做的就是在其他线程中运行这些任务。
本质上,有两个选项,具体取决于您是否想要接收返回值:
- 您将工作放入队列中,一些线程从队列中提取工作并完成这些任务 ==> 无返回值
- 或者您使用执行器库(python 3.2)并将工作发送到executor http://docs.python.org/dev/library/concurrent.futures.html,添加一个回调来表示任务已完成,并将控制权传递回龙卷风的 ioloop(通过挂在循环中的另一个回调)。
If your_task_func
是您想要卸载到另一个线程的同步任务,主要执行以下操作:
def callback(future):
# here you want to do some stuff with the value future.result()
EXECUTOR.submit(
your_task_func
).add_done_callback(
lambda future: tornado.ioloop.IOLoop.instance().add_callback(
partial(callback, future)))
有关此内容的更多详细信息可以在这篇好文章 http://lbolla.info/blog/2013/01/22/blocking-tornado.
问候
马库斯
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)