我是Flask的铁杆粉丝--部分原因是它很简单,另一部分原因是它有很多extensions。然而,Flask是为了在WSGI环境中使用的,而WSGI不是一个非阻塞的,所以(我相信)对于某些类型的应用程序,它的伸缩性不如Tornado。
由于每一个都有一个URL分派器,它将调用一个函数,并且两者都将使用Python文件(在Django中,您不会启动python文件,但在Flask或Tornado中,您可以启动python文件),那么在您的网站上有两个独立的部分-一个部分运行tornado的非阻塞作业,另一部分使用flask编写-有意义吗?
如果这是一个好主意,您将如何在Flask和Tornado之间共享cookie/会话?我会遇到问题吗,因为Flask将使用自己的系统,而Tornado将使用自己的系统?
发布于 2011-11-24 02:44:42
我想我得到了50%的解决方案,cookies还没有测试,但现在我可以使用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 ^_^'
然后旋风加载flask应用程序和tornado服务器的文件+一个简单的tornado应用程序,希望没有名为“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()
希望这篇文章能帮助那些想把它们混合在一起的人:)
发布于 2015-12-30 10:01:05
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()
https://stackoverflow.com/questions/8143141
复制相似问题