【发布时间】:2016-02-23 02:09:24
【问题描述】:
我正在尝试了解 Tornado 如何在异步和非阻塞模式下工作。
我只想让我的 RequestHandler 将sum(range(10000000)) 的结果写回客户端。
我在我的 RequestHandler 中尝试过这种方式:
@tornado.gen.coroutine
def post(self, *args, **kwargs):
res = yield tornado.gen.Task(self._sum, 10000000)
self.write("Result: %d" % res)
self.finish()
def _sum(self, size, callback):
callback(sum(range(size)))
我正在使用 apache2 基准测试工具对我的 Tornado 进行测试,其中包含 100 个请求,其中 50 个是并发的。
问题是我得到了与以下代码相同的时间(整个测试大约 15 秒):
def post(self, *args, **kwargs):
res = sum(range(10000000))
self.write("Result: %d" % res)
我不明白我在哪里做错了。
提前谢谢你
【问题讨论】:
标签: asynchronous tornado coroutine