contacto
Con mi Procfile así:
web: gunicorn app:app \
--bind "$HOST:$PORT" \
--error-logfile "-" \
--enable-stdio-inheritance \
--reload \
--log-level "debug"
¿Es de alguna manera posible obtener python? print
declaraciones que se registrarán en stdout / bash? estoy usando el bottle
marco aquí también, si eso afecta algo.
resulta que print
las declaraciones en realidad estaban llegando, pero con retraso.
Él documentos de gunicorn para –enable-stdio-inheritance nota para establecer el PYTHONUNBUFFERED
que pensé que tenía, pero parece tener una sintaxis incorrecta.
Lo resolví usando un .env
archivo con mi foreman
configuración para establecer la variable de esta manera:
PYTHONUNBUFFERED=TRUE
-
Aunque es una forma oficial de hacerlo, no funciona por razones desconocidas (python 2.7)
– FelikZ
4 de noviembre de 2016 a las 11:55
En python 3, agregando flush=True
en cada declaración de impresión funciona para mi aplicación de matraz/gunicorn.
P.ej
gunicorn --bind 0.0.0.0:8080 server --log-level debug
No se requieren banderas particulares.
A ver si esto ayuda.
-
No parece conveniente cambiar el código de la aplicación para evitar esto.
– Kontur
25 de septiembre de 2020 a las 6:41
-
agregar flush=True to print() también funcionó para mí con gunicorn
– Jaycer
20 de julio de 2022 a las 17:58
Satys
Por favor intente debajo del comando:
gunicorn --workers 3 --bind 127.0.0.1:5000 --error-logfile /var/log/gunicorn/error.log --access-logfile /var/log/gunicorn/access.log --capture-output --log-level debug
Funcionó para mí.
-
Especificar
--log-level
adebug
(por defectoinfo
). -
Especificar
--capture-output
indicador (falso por defecto).
Debería poder ver los registros en el archivo de registro de errores.
-
¿No hay forma de crearlo automáticamente?
FileNotFoundError: [Errno 2] No such file or directory: '/var/log/gunicorn/error.log'
– Rami Alloush
23 de diciembre de 2021 a las 21:15
-
¿Hay alguna manera de redirigir todos los stdout y stderr a un archivo separado de lo que se especifica en
--error-log
?–Naven Reddy Marthala
22 de enero de 2022 a las 8:19
Almiar
Uso Python3 junto con Flask.
yo suelo print('log info')
directamente en lugar de print('log info', flush=True)
.
yo solo configuro capture_output
a True
y establecer un errorlog
archivo y funciona.
Nota eso:
capturar_salida
--capture-output
False
Redirigir stdout/stderr al archivo especificado en registro de errores
Creo que es que necesitas especificar un registro de errores archivo para obtener la salida estándar.
Aquí está mi archivo de configuración gunicorn.config.py
entorno
accesslog = 'gunicorn.log'
errorlog = 'gunicorn.error.log'
capture_output = True
Entonces corre con gunicorn app_py:myapp -c gunicorn.config.py
La línea de comando equivalente sería
gunicorn app_py:myapp --error-logfile gunicorn.error.log --access-logfile gunicorn.log --capture-output
Esto está funcionando para mí (estoy usando un servicio llamado si-ct
)
gunicorn --workers 3 --bind unix:si-ct.sock -m 007 wsgi:app --log-level debug --error-logfile - --access-logfile - --capture-output --reload
Con eso, el print
la salida se muestra en mis registros de servicio, que leo usando
sudo journalctl -u si-ct -f
El indicador de depuración no se aplica a gunicorn. En realidad falla si intentas ejecutarlo:
gunicorn: error: unrecognized arguments: --debug
– Akronix
25 de mayo de 2018 a las 11:11
@Akronix gracias, verificado en el documentos y tampoco puedo encontrar –debug; tal vez nunca fue compatible pero no causó un error, o se eliminó desde entonces. Lo eliminé de la pregunta, solo para que no haya incentivos para copiarlo.
– Kontur
8 de junio de 2022 a las 12:15