Nat*_*usa 52
根据这个问题,这是因为Flask阻塞而且Tornado是无阻塞的.
如果将Tornado用作WSGI服务器而使用Flask进行URL路由+模板,则不应该有任何开销.使用这种方法,您不使用Flask的Web服务器,因此实际上没有额外的抽象层.
但是,如果只使用Flask作为模板,他们可以使用Tornado和Jinja2,这是Flask使用的模板引擎.
Col*_*ean 17
我一直认为使用Flask&Tornado是愚蠢的,但它确实有意义.但它增加了复杂性; 我的偏好是只使用Tornado,但是如果你附加到Flask,那么这个设置就可以了.
Flask(据说)非常好用,比Tornado简单.但是,Flask需要一个WSGI服务器进行生产(或FCGI,但这更复杂).将Tornado设置为WSGI服务器非常简单:
from tornado.wsgi import WSGIContainer
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop
from yourapplication import app
http_server = HTTPServer(WSGIContainer(app))
http_server.listen(5000)
IOLoop.instance().start()
Run Code Online (Sandbox Code Playgroud)
在这种情况下,开发人员只需要担心Flask应用程序.龙卷风只是充当服务器.
使用Tornado也可以处理一些请求(例如,不能与WSGI一起使用的websockets),并且仍然可以在Flask中完成大部分工作.从理论上讲,你可以通过Tornado的异步性能获得Flask的简单性.