55 votes

utiliser Flask et Tornado ensemble?

Je suis un grand fan de Flacon - en partie parce qu'il est simple et en partie parce que a beaucoup d' extensions. Toutefois, le Flacon est destiné à être utilisé dans un WSGI de l'environnement, et WSGI n'est pas un non-bloquant, donc (je crois) il n'a pas d'échelle ainsi que la Tornade pour certains types d'applications.

Car chacun a une URL répartiteur qui va appeler une fonction, et les deux utilisent des fichiers Python (dans Django vous n'avez pas de lancer le fichier python mais dans la fiole ou de la tornade que vous faites), n'est-il judicieux d'avoir deux parties distinctes sur votre site web - une partie de l'exécution de la non-blocage des emplois avec Tornade, et l'autre partie écrite avec la Fiole?

Si c'est une bonne idée, comment vous y prendriez-vous sur le partage des cookies et des sessions entre le Flacon et la Tornade? Vais-je rencontrer des problèmes, depuis Flacon va utiliser ses propres système et la Tornade va utiliser son propre système?

88voto

abdel Points 998

je crois que j'ai 50% de la solution, les cookies ne sont pas encore testé, mais maintenant je peux charger Flacon application à l'aide de la Tornade, et le mélange Tornade + Flacon ensemble :)

la première est ici flasky.py le fichier où se trouve le flacon de l'application est:

from flask import Flask
app = Flask(__name__)

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

et puis l' cyclone.py le fichier qui vous permettra de charger le ballon d'application et la tornade serveur + un simple tornade de l'application, de l'espoir, il n'y a pas de module appelé "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()

espérons que cela va aider quelqu'un qui veut mélanger :)

4voto

amonaco Points 114

Voici quelques informations sur la façon de faire fonctionner Tornado avec différents frameworks Python: http://www.tornadoweb.org/en/branch2.4/wsgi.html

3voto

Sparkxxf Points 161

Vous pouvez voir des documents à ce sujet dans http://www.tornadoweb.org/documentation/wsgi.html#wsgicontainer

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X