了解简单的tornado.gen.coroutine

时间:2017-12-15 06:26:06

标签: python tornado

我想了解龙卷风是如何运作的。在理解的同时,我尝试使用tornado.gen实现一个简单的协同程序示例。但这个例子似乎不起作用。这里出了什么问题?

import tornado.web
from tornado import gen


class MainHandler(tornado.web.RequestHandler):

    @gen.coroutine
    def get(self):
        print("Handling starts")
        yield tornado.gen.sleep(5)
        print("Handling ends")
        self.write('Hi')

当我打开多个浏览器标签并尝试请求服务器时,除当前请求之外的所有请求都被阻止,龙卷风似乎以同步方式处理这些请求:

Handling starts
Handling ends
Handling starts
Handling ends
Handling starts
Handling ends
Handling starts
Handling ends
Handling starts
Handling ends
Handling starts
Handling ends

1 个答案:

答案 0 :(得分:3)

浏览器不会同时向同一资源发出多个请求。有关详细说明,请参阅:Chrome stalls when making multiple requests to same resource?

龙卷风FAQs也提到了这一点。

无论如何,要查看Tornado的异步行为,请从您的浏览器发出一个请求,并从终端发出另一个请求:

curl http://127.0.0.1:8888/

您应该按预期看到输出。