programing

Flask와 Tornado를 함께 사용하십니까?

yoursource 2021. 1. 14. 23:25
반응형

Flask와 Tornado를 함께 사용하십니까?


그것은 부분적으로는 간단하고 부분적으로는 많은 확장 기능을 가지고 있기 때문에 나는 Flask 의 열렬한 팬입니다 . 그러나 Flask는 WSGI 환경에서 사용하기위한 것이며 WSGI는 비 차단이 아니므로 특정 종류의 응용 프로그램에 대해 Tornado 만큼 확장되지 않습니다 .

각각에는 함수를 호출하는 URL 디스패처가 있고 둘 다 Python 파일을 사용하기 때문에 (Django에서는 Python 파일을 실행하지 않지만 flask 또는 tornado에서는 실행합니다) 웹 사이트에 두 개의 개별 부분을 갖는 것이 합리적입니까? 한 부분은 Tornado로 비 차단 작업을 실행하고 다른 부분은 Flask로 작성 되었습니까?

이것이 좋은 생각이라면 Flask와 Tornado간에 쿠키 / 세션을 공유하는 방법은 무엇입니까? Flask가 자체 시스템을 사용하고 Tornado가 자체 시스템을 사용하므로 문제가 발생합니까?


나는 해결책의 50 %를 얻었다 고 생각하고, 쿠키는 아직 테스트되지 않았지만 이제 Tornado를 사용하여 Flask 응용 프로그램을로드하고 Tornado + Flask를 함께 혼합 할 수 있습니다. :)

첫 번째는 flasky.py 파일입니다. 플라스크 애플리케이션은 다음과 같습니다.

from flask import Flask
app = Flask(__name__)

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

그리고 cyclone.py 파일은 플라스크 응용 프로그램과 토네이도 서버 + 간단한 토네이도 응용 프로그램을로드합니다. "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()

Please consider the warning about performance that has been mentioned on 2 , 3

ReferenceURL : https://stackoverflow.com/questions/8143141/using-flask-and-tornado-together

반응형