tornado调用一系列阻塞的方法时候如何保持异步的效果呢?
用tornado开发restful服务,需要调用已有的诸多函数。怎样保持tornado的异步方式,是否需要对现有函数做修改?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
用tornado开发restful服务,需要调用已有的诸多函数。怎样保持tornado的异步方式,是否需要对现有函数做修改?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
一般情况下,只会对原有函数中操作耗时的处理进行异步装饰,例如网络请求
需要注意的是,一旦使用异步,那调用到的函数返回值必须是
Future
类型或者使用croutine
和Return()
返回。例如上面用到的
get_url
方法,要用以下的方式返回结果异步虽然好用,但是缺点就是一旦用了,调用的时候都要考虑异步,风格要一致…
如果是阻塞方法,应该丢给外部队列比如celery去处理,不要使用多线程worker。
如果是网络io导致的阻塞,可以利用tornado 的asyncHttpClient,将阻塞请求变为非阻塞