¿Dónde está el archivo de configuración de Python Gunicorn?
Importar registro
Importar logging.handlers
Importar WatchedFileHandler desde logging.handlers
Importar sistema operativo
Bind = '0.0.0.0:9010' #La IP vinculada tiene un número de puerto.
Backlog = 512 #Cola de escucha
chdir = '/home/test/server/bin ' # El directorio de trabajo de destino al que cambiará guni corn.
Timeout = 30 #Timeout
Worker_class = 'gevent' #Puedes usar el modo gevent o el modo de sincronización. El valor predeterminado es el modo síncrono.
Trabajadores = 16 #Número de procesos
Subprocesos = 2 #Especifica el número de subprocesos abiertos en cada proceso.
Loglevel = 'info' # El nivel de registro se refiere al nivel del registro de errores, pero el nivel del registro de acceso no se puede establecer.
acceso _ log _ format = ' %(t)s %(p)s %(h)s " %(r)s " %(s)s %(l)s %(b) s %(f)s " %(a)s " ' #Establecer el formato de registro de acceso de gunicorn.
El significado de cada opción es el siguiente
"""
hDirección remota
l '-'
u es actualmente '-', puede ser el nombre de usuario en una versión futura
Fecha de solicitud
r línea de estado (por ejemplo, "GET/HTTP/1.1")
Estado
b duración de la respuesta o '-'
f referente
agente de usuario
t tiempo de solicitud (segundos)
dTiempo de solicitud en microsegundos
lTiempo de solicitud en segundos decimales
pID del proceso
{ Header }Solicito encabezado
{Header}oEncabezado de respuesta
"""
Accesslog = "/dev/null" #La ruta al archivo de registro de acceso.
Errorlog = "/dev/null" #La ruta del archivo de registro de errores.
Los registros del servidor de la empresa se dividen por días. TimeRotatingFileHandler todavía tiene problemas al dividir los registros entre múltiples procesos, así que utilícelo.
Registros WatchedFileHandler, en la máquina del servidor, agrega una tarea automática matutina para que el registro se pueda cortar, pero gunicorn
De forma predeterminada, el registro usa FileHandler, pero una vez respaldado Si el La tarea automática está deshabilitada, no se recreará automáticamente, por lo que redirijo la secuencia FileHandler original a /dev/null y agrego los controladores que quiero de esta manera:
"""
acclog = logging . get logger(' guni corn . access ')
acclog . addhandler(WatchedFileHandler('/home/test/server/log/guni corn _ access . log ' ))
acclog.propagate = False
errlog = logging . get logger(' guni corn . error ')
errlog (WatchedFileHandler('/ home/test/server . /log/guni corn _ error . log '))
errlog.propagate = False
"""
Gunicorn se usa con nginx, nginx solo necesita para configurar un proxy inverso.
proxy _ pass http://127 .