一起使用烧瓶和龙卷风?

我是Flask的忠实粉丝 – 部分原因是它很简单,部分原因是因为它有很多扩展 。 然而,Flask是为了在WSGI环境中使用,WSGI不是非阻塞的,所以(我相信)对于某些types的应用程序来说,它不能像Tornado那样扩展。

由于每个人都有一个URL调度器将调用一个函数,都将使用Python文件(在Django中,你不启动python文件,但在烧瓶或龙卷风你做)是否有意义,有两个单独的部分到您的网站 – 一部分是用Tornado运行非阻塞作业,另一部分是用Flask写的?

如果这是一个好主意,你会怎么去分享Flask和Tornado之间的cookies /会话? 我会遇到问题,因为烧瓶将使用自己的系统,龙卷风将使用自己的系统?

我想我有50%的解决scheme,cookies尚未testing,但现在我可以加载使用龙卷风的Flask应用程序,并混合Tornado +烧瓶:)

首先这里是flasky.py烧瓶应用程序的文件:

from flask import Flask app = Flask(__name__) @app.route('/flask') def hello_world(): return 'This comes from Flask ^_^' 

然后将cyclone.py文件加载到烧瓶应用程序和龙卷风服务器+一个简单的龙卷风应用程序,希望没有模块称为“旋风”^ _ ^

 from tornado.wsgi import WSGIContainer from tornado.ioloop import IOLoop from tornado.web import FallbackHandler, RequestHandler, Application from flasky import app class MainHandler(RequestHandler): def get(self): self.write("This message comes from Tornado ^_^") tr = WSGIContainer(app) application = Application([ (r"/tornado", MainHandler), (r".*", FallbackHandler, dict(fallback=tr)), ]) if __name__ == "__main__": application.listen(8000) IOLoop.instance().start() 

希望这会帮助那些想混合他们:)

根据1和2 ,合并和较短的答案是

 from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello World!" if __name__ == "__main__": from tornado.wsgi import WSGIContainer from tornado.httpserver import HTTPServer from tornado.ioloop import IOLoop http_server = HTTPServer(WSGIContainer(app)) http_server.listen(8000) IOLoop.instance().start() 

请考虑2,3提到的性能警告