Diferencia entre revisiones de «Software Gunicorn»

(Página creada con '{{Ficha Software |nombre=Gunicorn |familia=Servidores web |imagen=Logo_gunicorn2-240x240.png‎ |tamaño= |descripción= |imagen2= |tamaño2= |descripción2= |creador= |dise...')
(Etiqueta: nuestro-nuestra)
 
(Etiqueta: nuestro-nuestra)
Línea 36: Línea 36:
 
  sudo apt-get install gunicorn
 
  sudo apt-get install gunicorn
 
  o usando pip
 
  o usando pip
*1
+
*2
 
  pip install gunicorn
 
  pip install gunicorn
  

Revisión del 08:59 30 oct 2014

Gunicorn
Información sobre la plantilla
Parte de la familia Servidores web
Logo gunicorn2-240x240.png
Modelo de desarrolloSoftware libre
Lanzamiento inicial2014
GéneroServidores web
Sistemas Operativos compatiblesGNU/Linux

El Servidor Gunicorn El también conocido como Green Unicorn (Unicornio Verde). Este es un servidor HTTP para Python que soporta WSGI, Django y Paster de forma nativa; consume pocos recursos en ejecución y es bastante rápido. Gunicorn nos permite administrar las peticiones simultáneas que nuestra aplicación recibe y que cuenta con una serie de hooks que permite ejecutar código Python en los diferentes puntos de ejecución: on_start, when_ready on_reload, pre_fork post_fork (y otros) que lo hacen más extensible.

Instalación

Podemos instalarlo en Debian y derivados ejecutando

  • 1
sudo apt-get install gunicorn
o usando pip
  • 2
pip install gunicorn


Puede que también se necesite instalar Eventlet o Gevent si se espera que el código de la aplicación pueda hacer pausas durante largos períodos de tiempo durante el procesamiento de solicitudes.

  • 1 pip install eventlet # Para workers eventlet
  • 2 pip install gevent # Para workers gevent
  • 3 pip install greenlet # Requerido para ambos

Uso

Después de instalado ya podemos tener acceso a los comandos disponibles en Gunicorn que son:

  • gunicorn: utilizado para servir aplicaciones WSGI.
  • gunicorn_django: utilizado para servir aplicaciones Django.
  • gunicorn_paster: para frameworks compatibles con Paster como Pyramid, Pylons, TurboGears 2, …

1* gunicorn [OPTIONS] APP_MODULE

Donde APP_MODULE se define como $(MODULE_NAME):$(VARIABLE_NAME). El nombre del módulo puede ser la ruta completa del fichero y el nombre de la variable se refiere a la variable que guarda la aplicación WSGI. Un ejemplo de uso sería el siguiente:

1* gunicorn --workers 5 test:application

Opciones más relevantes están

  • c FILE, --config FILE. La ruta del fichero de configuración o módulo Python.
  • b ADDRESS, --bind ADDRESS. Un string de la forma: ‘HOST’, ‘HOST:PORT’, ‘unix:PATH’. Un IP es un HOST válido.
  • w INT, --workers INT. El número de workers, que por defecto es 1.
  • k STRING, --worker-class STRING. El tipo de worker, que por defecto es sync pero pueden ser: sync, eventlet, gevent y tornado. Personalmente prefiero Gevent.
  • worker-connections INT. La cantidad máxima de clientes simultáneos. Por defecto este valor es de 1000.
  • u USER, --user USER. El usuario que ejecutará el proceso. Este valor puede ser el uid o el nombre del usuario.
  • g GROUP, --group GROUP. El grupo que ejecutará el proceso. Este valor puede ser el gid o el nombre del grupo.

El archivo de configuración debe ser un archivo de código fuente Python válido. Sólo tiene que ser legible desde el sistema de archivos. Más específicamente, no necesita ser importable. Cualquier Python es válida. Sólo considere que este se ejecutará cada vez que se inicia Gunicorn (incluso cuando usted señala Gunicorn para recargar). Para establecer un parámetro, simplemente asignar a la misma. No hay una sintaxis especial. Los valores suministrados por el usuario serán utilizados para los valores de configuración.

1 import multiprocessing 2 bind = "127.0.0.1:8000" 3 workers = multiprocessing.cpu_count() * 2 + 1

Workers

Con respecto al número de workers es válido aclarar que no debe asociarse con el número de clientes que espera tener. Gunicorn sólo debería necesitar 4-12 procesos de trabajo para manejar cientos o miles de peticiones por segundo. Gunicorn se basa en el sistema operativo para proporcionar todo el equilibrio de la carga cuando tramita las solicitudes. La cantidad de workers a usar dependerá de las condiciones en las que se ejecutará tu aplicación, esta cantidad generalmente se recomienda que sea igual a la (cantidad de CPUs * 2) + 1.

Gunicorn es para servir todo lo dinámico de un proyecto en un servidor. Se recomienda usarlo en combinación con Nginx (un servidor que nos sirve de proxy HTTP) para servir los ficheros estáticos y Gevent para atender las peticiones de forma asincrónica.

Fuentes

  • [1] Visto el 22 de octubre del 2014 en humanos.uci.cu