一尘不染

一起使用Flask和Tornado?

flask

我是Flask的忠实拥护者 -部分是因为它简单,部分是因为它具有很多扩展。但是,Flask是要在WSGI环境中使用的,并且WSGI不是非阻塞的,因此(我相信)对于某些类型的应用程序,它的伸缩性不如Tornado。

由于每个人都有一个将调用函数的URL调度程序,并且两个都将使用Python文件(在Django中,你不启动python文件,但在flask或Tornado中,你可以这样做)这样做对于将网站包含两个独立的部分是有意义的-一部分使用Tornado运行非阻塞作业,另一部分使用Flask编写?

如果这是一个好主意,那么你将如何在Flask和Tornado之间共享cookie /会话?我会遇到问题,因为Flask将使用它自己的系统,而Tornado将使用它自己的系统?


阅读 978

收藏
2020-04-05

共1个答案

一尘不染

我想我有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()

希望这会对想要混合它们的人有所帮助:)

2020-04-05