我正在sockjs-tornado上构建一个服务器,并想知道如何利用龙卷风的异步HTTP客户端 - 或其他异步设施来实现龙卷风,如asyncmongo,tornado-redis等。显然这是不可能的使用tornado.web.asynchronous
&随机方法上的tornado.gen.engine
装饰器。因此,如果我需要在SockJSConnection的on_message()
内进行异步Mongo / HTTP / Redis调用,我该怎么做?
答案 0 :(得分:8)
你所要做的就是创建一个由tornado.gen装饰器装饰的方法(或函数)
创建小小的要点以说明如何做到这一点:https://gist.github.com/3708549
如果您将运行示例并检查服务器控制台,您将看到以下输出:
1 - 提出请求
2 - 从on_message
返回......稍有延迟......
3 - 向客户发送数据
因此,它不会阻止ioloop并在后台进行HTTP调用。