2013-02-11 4 views
0

La discussion qui suit a déjà montré avec succès qu'un serveur Web non bloquant n'apportera rien de bon aux applications web traditionnelles.play 2.0 modèle non bloquant vs modèle non bloquant python tornado

What is the best way to run Django on Tornado Web Server to have async + django admin + django orm possibilities?

Django is not asynchronous, so running Django in Tornado will remove most of the performance benefits you might get from Tornado. 

Il existe nonblocking model dans le cadre de lecture, mais il ne pose aucune exigence particulière aux serveurs Web (il m'a donné l'impression que juste une tomcat ou jetée travailleraient, qui ne supporte pas modèle non-bloquant eux-mêmes). Ma question est la suivante: Comment un serveur Web traditionnel comme Tomcat peut-il bénéficier d'un framework Web non bloquant tel que Play?

Répondre

3

portion asynchrone des requêtes HTTP (quand un thread peut servir plusieurs requêtes HTTP) is available à partir de l'API Servlet 3. Tomcat 7 et Jetty 8 support API Servlet 3.

Il n'y a pas d'avantages beaucoup pour l'exécution Lecture/Akka applications sur les anciens conteneurs de servlet 2, car la requête ne libère pas le thread alloué pour l'ensemble de son cycle de vie. Cependant, les fonctions asynchrones et les acteurs Akka peuvent être utiles même dans ce cas, pour certaines tâches de traitement en arrière-plan. Django est vraiment non-asynchrone.

Tornado est asynchrone en interne, c'est-à-dire qu'il permet de gérer plusieurs connexions TCP en thread unique, mais quand tornado.wsgi est utilisé pour interopérer avec Django, il alloue un thread pour la requête, appelle WSGI callable dedans, et ce thread est alloué à cette seule requête pour toute sa vie. WSGI est quelque chose comme l'API Servlet 2.