一起用Flask和龙卷风?

2024-05-17 07:35:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我非常喜欢烧瓶,部分原因是它很简单,部分原因是它有很多extensions。然而,烧瓶是用于WSGI环境的,WSGI不是非阻塞的,所以(我相信)对于某些类型的应用来说,它的伸缩性不如龙卷风。

因为每一个都有一个URL分派器,它将调用一个函数,并且两个都将使用Python文件(在Django中,您不启动Python文件,但在flask或tornado中启动Python文件),所以在您的网站上有两个独立的部分有意义吗?一部分使用tornado运行非阻塞作业,另一部分使用flask编写?

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


Tags: 文件函数urlflask分派wsgi类型环境
2条回答

我想我得到了50%的溶液,饼干还没有测试,但现在我可以使用Tornado加载烧瓶应用程序,并将Tornado+烧瓶混合在一起:)

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

from flask import Flask
app = Flask(__name__)

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

然后将加载烧瓶应用程序和tornado服务器的cyclone.py文件+一个简单的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()

希望这能帮助那些想把它们混合在一起的人:)

基于12,组合的较短答案是

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()

请考虑23中提到的有关性能的警告

相关问题 更多 >