one.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: Liang Xian Sen
# Python 3.5
# Date: 2017/12/13
import tornado.web
import time
from tornado import gen
class IndexHandler(tornado.web.RequestHandler):
def get(self):
self.write('index')
async def doing():
await gen.sleep(10)
return 'Non-Blocking'
class NonBlockingHandler(tornado.web.RequestHandler):
async def get(self):
result1, result2 = await gen.convert_yielded([doing(), doing()])
self.write(result1)
application = tornado.web.Application([
(r"/index", IndexHandler),
(r"/nonblocking", NonBlockingHandler),
])
if __name__ == "__main__":
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()
two.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: Liang Xian Sen
# Python 3.5
# Date: 2017/12/13
import tornado.web
import time
from tornado import gen
class IndexHandler(tornado.web.RequestHandler):
def get(self):
self.write('index')
async def doing():
await time.sleep(10)
return 'Non-Blocking'
class NonBlockingHandler(tornado.web.RequestHandler):
async def get(self):
result1, result2 = await gen.convert_yielded([doing(), doing()])
self.write(result1)
application = tornado.web.Application([
(r"/index", IndexHandler),
(r"/nonblocking", NonBlockingHandler),
])
if __name__ == "__main__":
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()
文件 | 操作 | 效果 |
one.py | 分别打开: | 可以立刻打开 网页立刻打开 |
two.py | 分别打开: | 会阻塞,网页转圈圈. 根据[1]中的说法,叫作"路由层阻塞" |
Reference: