Gunicorn "Green Unicorn" es un servidor HTTP Python WSGI UNIX de alto rendimiento ampliamente utilizado, portado del proyecto Ruby's Unicorn (Unicorn), que utiliza el modo de trabajo previo a la bifurcación, tiene un uso muy simple y liviano Características como el consumo de recursos y el alto rendimiento.
Instalar gunicorn
$ sudo apt- obtener actualización
$ sudo apt -get install gunicorn
Ejecute gunicorn:
$ gunicorn [OPCIONES] Nombre del módulo: nombre de la variable
El nombre del módulo es el nombre del archivo python, que puede ser la ruta completa + nombre del archivo python; el nombre de la variable es el WSGI invocable (Web Server Gateway) en el archivo python.
Ejemplos:
# filename : test.py def app (environmental, start_response): "" " Objeto de aplicación más simple posible " "" data = ' Hello, World! \ n ' status = ' 200 OK ' response_headers = [ ( ' Content-type ' , ' text / plain ' ), ( ' Content-Length ' , str (len (data))) ] start_response (status, response_headers) return iter ([datos])
Ejecuta la aplicación:
$ gunicorn --workers = 2 test: aplicación
Parámetros de configuración comunes:
-c CONFIG, --config = CONFIG
Especifique un archivo de configuración (archivo py).
-b BIND, --bind = BIND
Enlace con el zócalo especificado.
-D, --demonio
Ejecutar el proceso de Gunicorn en forma de demonio en realidad pone este servicio en segundo plano para ejecutarse.
-w TRABAJADORES, - trabajadores = TRABAJADORES
El número de procesos de trabajo. Como se mencionó anteriormente, gunicorn es un modo de trabajador previo a la bifurcación, lo que significa que cuando se inicia gunicorn, se bifurca previamente un número específico de procesos de trabajador en el proceso principal. Cuando se procesan las solicitudes, gunicorn se basa en el sistema operativo para proporcionar equilibrio de carga. La cantidad es: (2 x $ num_cores) + 1
-k WORKERCLASS, --worker-class = WORKERCLASS
Tipo de proceso de trabajo: incluye sincronización (predeterminado), eventlet, gevent o tornado, gthread, gaiohttp.
--backlog INT
El número máximo de conexiones pendientes.
--chdir
Cambie al directorio de trabajo especificado.
- NIVEL de nivel de registro
La granularidad del registro de errores de salida, NIVEL válido son:
error de
advertencia de
información de depuración
crítico
- archivo de registro de acceso
Confirme que el archivo ARCHIVO se escriba en el registro de acceso. '-' Significa salida a salida estándar.
--error-logfile FILE, --log-file FILE
Confirme que el archivo ARCHIVO se escriba en el registro de errores. '-' Significa salida a salida de error estándar.
configuración de gunicorn
Gunicorn obtiene la configuración de tres lugares diferentes:
Configuración del marco (generalmente solo afecta a las aplicaciones de Paster)
Archivo de configuración (archivo python): la configuración en el archivo de configuración anulará la configuración del marco.
Línea de comando
La configuración del marco solo está relacionada con Paster (un marco web), no se discute; la configuración de la línea de comandos se muestra en la sección anterior; ahora vemos cómo configurar gunicorn con archivos de configuración:
El archivo de configuración debe ser un archivo python, solo escriba los parámetros en la línea de comando en el archivo py. Si necesita establecer qué parámetro, puede asignar un valor al parámetro en el archivo py. Por ejemplo:
# example.py bind = " 127.0.0.1:8000 " trabajadores = 2
Ejecute gunicorn:
$ gunicorn -c example.py test: aplicación
Es equivalente a:
$ gunicorn -w 2 -b 127.0.0.1:8000 prueba: aplicación
Por supuesto, el archivo de configuración también puede lograr una configuración más compleja:
# Gunicorn.py importación el registro de importación logging.handlers de logging.handlers importación WatchedFileHandler Importación OS Importación de multiprocesamiento el enlace = ' 127.0.0.1:8000 ' # vinculante IP y el puerto de retraso acumulado = 512 # escuchan cola de la chdir = ' / home / test / server / bin ' # gunicorn para cambiar al directorio de trabajo de destino timeout = 30 # timeout worker_class = ' gevent ' # usa el modo gevent, también puedes usar el modo de sincronización, el modo predeterminado es el modo de sincronización = Trabajadores multiprocessing.cpu_count () * 2 + 1 # número de procesos Hilos = 2 # Especifica el número de hilos por proceso de abrir la LogLevel = ' info ' # nivel de registro, el nivel de registro se refiere al nivel del registro de errores, y registro de acceso No se puede establecer el nivel access_log_format = ' % (t) s% (p) s% (h) s "% (r) s"% (s) s% (L) s% (b) s% (f) s "" % (a) S ' ' # conjunto gunicorn formato de registro de acceso, el registro de errores no se pueden establecer "" " lo que significa que cada opción es la siguiente: H dirección remota L '-' U Actualmente '-', en puede ser usuario suelta el nombre futuros en T fecha de la solicitud r línea de estado (por ejemplo, `` GET / HTTP / 1.1 '') s estado b longitud de respuesta o '-' f árbitro Un agente de usuario T Solicitud Tiempo en segundos El tiempo de solicitud D en microsegundos L decimal Solicitud tiempo en segundos que p Identificación del Proceso "" " el AccessLog = " /home/test/server/log/gunicorn_access.log " # archivo de registro de acceso del registro de errores = " / Inicio /test/server/log/gunicorn_error.log " # archivo de registro de errores
Ejecute gunicorn:
$ gunicorn -c gunicorn.py prueba: aplicación