python - Cómo ejecutar la aplicación Flask con Tornado
(1)
Los documentos de Flask solían describir cómo hacer esto, pero se ha eliminado debido a las notas de rendimiento a continuación. No necesita Tornado para servir su aplicación Flask, a menos que todo su código asincrónico ya esté escrito en Tornado.
Los documentos de Tornado sobre WSGI también describen esto. También incluyen una gran advertencia de que esto probablemente sea menos eficaz que usar un servidor de aplicaciones WSGI dedicado como uWSGI, Gunicorn o mod_wsgi.
WSGI es una interfaz síncrona , mientras que el modelo de concurrencia de Tornado se basa en la ejecución asincrónica de subproceso único. Esto significa que ejecutar una aplicación WSGI con
WSGIContainer
de Tornado es menos escalable que ejecutar la misma aplicación en un servidor WSGIgunicorn
comogunicorn
ouwsgi
. UseWSGIContainer
solo cuando haya beneficios al combinar Tornado y WSGI en el mismo proceso que supera la escalabilidad reducida.
Por ejemplo, use Gunicorn en su lugar:
gunicorn -w 4 app:app
Después de todo eso, si realmente quieres usar Tornado, puedes usar el patrón descrito en los documentos:
from tornado.wsgi import WSGIContainer
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop
from yourapplication import app
http_server = HTTPServer(WSGIContainer(app))
http_server.listen(5000)
IOLoop.instance().start()
Me gustaría ejecutar una aplicación simple escrita en Flask con Tornado. ¿Cómo hago esto? Quiero usar Python 2.7 y la última versión de Tornado (4.2).
from flask import Flask
app = Flask(__name__)
@app.route(''/'')
def hello():
return ''Hello World!''
if __name__ == ''__main__'':
app.run()