我想了解龙卷风是如何运作的。在理解的同时,我尝试使用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
答案 0 :(得分:3)
浏览器不会同时向同一资源发出多个请求。有关详细说明,请参阅:Chrome stalls when making multiple requests to same resource?
龙卷风FAQs也提到了这一点。
无论如何,要查看Tornado的异步行为,请从您的浏览器发出一个请求,并从终端发出另一个请求:
curl http://127.0.0.1:8888/
您应该按预期看到输出。