¿Cómo uso Django con el servidor web Tornado?¿Cómo usar Django con el servidor web Tornado?
Respuesta
Hay un proyecto llamado tornado-proxy que podría ayudarlo. Pero me gustaría recomendarle que use Nginx. En la configuración de Nginx ahora se podían utilizar PROXY_PASS a dirigir las llamadas de esta manera:
location /comet {
proxy_pass http://localhost:8081;
}
location/{
proxy_pass http://localhost:8080;
}
En el mundo real, que conectaría Django y algunos servidor web listo para la producción con WSGI. Esta demostración muestra cómo puede ejecutar Tornado (y su servidor web) y Django uno al lado del otro desde un módulo de python que sirve diferentes prefijos de URL: https://github.com/bdarnell/django-tornado-demo. Tornado se bloquearía al atender cualquier solicitud dirigida a Django, sin embargo.
Sorprendentemente útil, gracias por el django-tornado-demo – securecurve
es muy simple (especialmente con django 1.4).
1 - solo crea tu proyecto django (y aplicaciones) y asegúrate de que funciona bien.
2- Crear un nuevo archivo de pitón en la carpeta raíz (mismo directorio en el que utiliza django-admin.py startproject
)
3- continuación, copie el código de abajo, edite la línea os.environ['DJANGO_SETTINGS_MODULE']
, y pegarlo en ese nuevo archivo .py.
import os
import tornado.httpserver
import tornado.ioloop
import tornado.wsgi
import sys
import django.core.handlers.wsgi
#sys.path.append('/home/lawgon/') # path to your project (if you have it in another dir).
def main():
os.environ['DJANGO_SETTINGS_MODULE'] = 'myProject.settings' # path to your settings module
application = django.core.handlers.wsgi.WSGIHandler()
container = tornado.wsgi.WSGIContainer(application)
http_server = tornado.httpserver.HTTPServer(container)
http_server.listen(8888)
tornado.ioloop.IOLoop.instance().start()
if __name__ == "__main__":
main()
Django 1.6 + debería ser así:
import os
import tornado.httpserver
import tornado.ioloop
import tornado.wsgi
from django.core.wsgi import get_wsgi_application
def main():
os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings' # path to your settings module
application = get_wsgi_application()
container = tornado.wsgi.WSGIContainer(application)
http_server = tornado.httpserver.HTTPServer(container)
http_server.listen(8888)
tornado.ioloop.IOLoop.instance().start()
if __name__ == "__main__":
main()
ACTUALIZACIÓN:
creé una demostración de trabajo mínima, que muestra cómo utilizar el servidor web Tornado para funcionar bien con Django:
https://github.com/tamasgal/django-tornado
POST ORIGINAL:
Solo una observación: El flujo de trabajo de la aplicación WSGI ha cambiado de 1.6 a 1.7. Usted tiene que reemplazar la importación
import django.core.handlers.wsgi
con
from django.core.wsgi import get_wsgi_application
y cambiar la inicialización de la aplicación
application = django.core.handlers.wsgi.WSGIHandler()
a
application = get_wsgi_application()
Este es el bacalao modificada e a partir de la respuesta de la Moayyad Yaghi:
import os
import tornado.httpserver
import tornado.ioloop
import tornado.wsgi
import sys
import django.core.handlers.wsgi
from django.core.wsgi import get_wsgi_application
#sys.path.append('/home/lawgon/') # path to your project (if you have it in another dir).
def main():
os.environ['DJANGO_SETTINGS_MODULE'] = 'myProject.settings' # path to your settings module
application = django.core.handlers.wsgi.WSGIHandler()
application = get_wsgi_application()
container = tornado.wsgi.WSGIContainer(application)
http_server = tornado.httpserver.HTTPServer(container)
http_server.listen(8888)
tornado.ioloop.IOLoop.instance().start()
if __name__ == "__main__":
main()
- 1. Tornado con Django
- 2. ¿Cómo se ejecuta localmente el servidor web Tornado?
- 3. ¿Cómo registrar solicitudes para stdout en el servidor web Tornado?
- 4. ¿Cómo usar el método POST en Tornado?
- 5. Publicación en el servidor de Tornado
- 6. ¿Cuándo y cómo usar Tornado? ¿Cuándo es inútil?
- 7. ¿Cómo puedo usar el ORM de Django en mi aplicación Tornado?
- 8. ¿Qué servidor web usar con la botella?
- 9. ¿Cuál es el mejor servidor socket.io para usar con Django - gevent o tornadio2?
- 10. Implementar el servicio web java sin usar el servidor web
- 11. ¿Cuál es la mejor manera de ejecutar Django en Tornado Web Server para tener async + django admin + django orm posibilidades?
- 12. ¿Cómo usar Django para obtener el nombre del servidor host?
- 13. problema corriendo hello world con tornado servidor web (Python 2.5, Win 7)
- 14. Cómo compartir datos entre las peticiones de Tornado Web
- 15. Qué servidor web usar para el desarrollo web de Lua
- 16. Cómo usar el servidor http y el servidor de aplicaciones en una aplicación web java
- 17. Tornado. Django-like testrunner and test database
- 18. Cómo usar $ .post con django?
- 19. ¿Cómo usar Django con GWT?
- 20. Uso de ZeroMQ en aplicaciones web: cómo interactúa frontend con el servidor
- 21. Usar servidor web IIS local para depurar
- 22. Cómo usar django-compressor con apache?
- 23. Cómo usar C++ para el servidor apache
- 24. pitón configuración tornado
- 25. Thrift + Tornado + Async
- 26. Cómo integrar SockJS con otro marco web
- 27. consulta asincrónica COMET con Tornado y Prototipo
- 28. Carga de archivo con Tornado
- 29. ¿Qué es el servidor web impulsado por eventos?
- 30. ¿Cómo usar cherrypy como servidor web para archivos estáticos?
Django no es un servidor web. Viene con un servidor web básico para ayudar en el desarrollo de proyectos de Django, pero que no es adecuado para ser utilizado en entornos de producción. –
Totalmente correcto, aunque supuse que xRobot estaba usando Django (con su servidor web) como un servidor web/marco completo para construir su proyecto web. Le perdoné los detalles. – MyGGaN
He jugado con chat y tornado en mi computadora y funciona perfectamente. En mi servidor estoy usando nginx y django framework, pero no sé dónde poner Tornado. P.s. ¿Has probado también el módulo de empuje para Nginx? Gracias;) – xRobot