2012-06-13 11 views
18

Estoy utilizando gevent en mi aplicación Python (basada en Django). Sin embargo, ahora me pregunto cómo ejecutarlo en producción. ¿Qué servidor debería usar? Durante el desarrollo, utilizo gevent.pywsgi, pero ¿está preparado para la producción? También he oído hablar de gunicornio, pero he visto algunas bonitas bad benchmarks al respecto.Cómo ejecutar gevent en producción

Nota: Necesito SSL.

+4

Dos puntos sobre este punto de referencia. 1.) La prueba de gunicorn utiliza el trabajador de sincronización predeterminado, no el trabajador de gevent que está buscando utilizar. 2.) Del resumen "Si hay algo que hizo claro este punto de referencia es que la mayoría de los servidores web de Python ofrecen un gran rendimiento y si cree que las cosas son lentas, lo primero que debe observar es su propia aplicación". –

+8

Consulte la respuesta a una pregunta similar (http://stackoverflow.com/questions/7855343/run-web-app-with-gevent/7857201#7857201), el autor de gevent mismo dice, en pocas palabras, "Use gunicorn. " – akent

Respuesta

26

Gunicorn es realmente la mejor opción. Es rápido, está escrito en python puro (lo que facilita la implementación en servicios alojados como Heroku), y está bien mantenido y se utiliza para una gran cantidad de aplicaciones web de Python.

De forma predeterminada, Gunicorn utiliza una clase de trabajador síncrono para atender las solicitudes, pero se puede configurar fácilmente para usar gevent simplemente agregando -k gevent al comando de ejecución.

Solo una nota rápida: siempre debe ejecutar gunicornio detrás de un proxy como NGINX, barniz, etc., ya que esto permitirá que el gunicornio maneje muchas más solicitudes que de otra manera, debido al buffering de respuesta.

+4

He visto que necesito deshabilitar el almacenamiento en búfer si lo uso con gevent. ¿Cancela los beneficios de Nginx? – Flavien

+0

¿Cuál es el punto de usar HTTP en el servidor back-end? A diferencia de FastCGI, SCGI y uwsgi, HTTP no se diseñó para la comunicación entre el extremo de la página y el back-end, y su uso tiene sus limitaciones y problemas. –

+0

Creo que no necesita preocuparse por ejecutar un proxy inverso como nginx cuando usa Heroku ya que la malla de enrutamiento lo maneja. – dhackner

Cuestiones relacionadas