对慢速请求的Tornado AsyncHTTPClient行为

时间:2014-12-11 07:50:59

标签: asynchronous tornado

鉴于这个基本的例子:

import tornado.gen
import tornado.httpclient
import tornado.web
import tornado.ioloop
import tornado.web


class MainHandler(tornado.web.RequestHandler):
    @tornado.web.asynchronous
    @tornado.gen.engine
    def get(self):
        client = tornado.httpclient.AsyncHTTPClient()
        response = yield tornado.gen.Task(client.fetch, 'http://slowserver-with-a-fake-5s-sleep')
        self.write(str(response.code))
        self.finish()


application = tornado.web.Application([
    (r"/", MainHandler),
])

if __name__ == "__main__":
    application.listen(9999)
    tornado.ioloop.IOLoop.instance().start()

当我点击' /'两次,我可以看到我的人为缓慢的服务器接收两个请求响应,其间有5秒。

龙卷风不应该一个接一个地发出两个请求并等待回复吗?为什么ioloop会被阻止?

龙卷风2.4

1 个答案:

答案 0 :(得分:0)

哎呀,答案很有趣。只是Chrome将请求排队到同一个网址...