我是Flask的忠实拥护者 -部分是因为它简单,部分是因为它具有很多扩展。但是,Flask是要在WSGI环境中使用的,并且WSGI不是非阻塞的,因此(我相信)对于某些类型的应用程序,它的伸缩性不如Tornado。
由于每个人都有一个将调用函数的URL调度程序,并且两个都将使用Python文件(在Django中,你不启动python文件,但在flask或Tornado中,你可以这样做)这样做对于将网站包含两个独立的部分是有意义的-一部分使用Tornado运行非阻塞作业,另一部分使用Flask编写?
如果这是一个好主意,那么你将如何在Flask和Tornado之间共享cookie /会话?我会遇到问题,因为Flask将使用它自己的系统,而Tornado将使用它自己的系统?
我想我有50%的解决方案,这些cookie尚未经过测试,但是现在我可以使用Tornado加载Flask应用程序,并将Tornado + Flask混合在一起:)
首先是flasky.py flask应用程序所在的文件:
from flask import Flask app = Flask(__name__) @app.route('/flask') def hello_world(): return 'This comes from Flask ^_^'
然后是Cyclone.py文件,它将加载烧瓶应用程序和tornado服务器以及一个简单的tornado应用程序,希望没有名为“ cyclone”的模块^ _ ^
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()
希望这会对想要混合它们的人有所帮助:)