Curso de Flask

Curso de Flask

Bernardo Cassina

Bernardo Cassina

Debugging en Flask

6/36
Recursos

Debugging: es el proceso de identificar y corregir errores de programación.

Para activar el debug mode escribir lo siguiente en la consola:

export FLASK_DEBUG=1
echo $FLASK_DEBUG

Logging: es una grabación secuencial en un archivo o en una base de datos de todos los eventos que afectan a un proceso particular.

Se utiliza en muchos casos distintos, para guardar información sobre la actividad de sistemas variados.

Tal vez su uso más inmediato a nuestras actividades como desarrolladores web sería el logging de accesos al servidor web, que analizado da información del tráfico de nuestro sitio. Cualquier servidor web dispone de logs con los accesos, pero además, suelen disponer de otros logs, por ejemplo, de errores.

Los sistemas operativos también suelen trabajar con logs, por ejemplo para guardar incidencias, errores, accesos de usuarios, etc.

A través de el logs se puede encontrar información para detectar posibles problemas en caso de que no funcione algún sistema como debiera o se haya producido una incidencia de seguridad.

Aportes 50

Preguntas 7

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Otra opción para correr el servidor en modo debug es poner estas lineas al final del archivo main.py:

if __name__ == '__main__':
    app.run(debug=True)

y correr main.py desde la terminal:

python main.py 

Una vez que hayas levantado todo tu servidor a mano, posteriormente lo puedes automatizar así:

#!/bin/bash

source venv/bin/activate

export FLASK_APP=main.py
export FLASK_DEBUG=1

flask run

  1. Copia el código en un nuevo archivo dentro de la raíz de tu proyecto
  2. Guarda el archivo con extension .sh
  3. Ejecuta desde la consola con el comando: source file_name.sh
  4. Listo!, Cada vez que quieras levantar el servidor de Flask solo haz el paso 3

Qué hacer si el servidor no se inicia

flaks run

o

python -m flask run

Activar Modo debug

Para activar el modo debug simplemente hay que añadir la variable de entorno FLASK_ENV y asignarle el valor development.

En Linux/Mac:

export FLASK_ENV=“development”

En Windows:

set “FLASK_ENV=development”

También puede controlar el modo de debug por separado del entorno exportando

export FLASK_DEBUG=1

Para crear la variable FLASK_DEBUG en PowerShell

$env:FLASK_DEBUG=1

Qué manera más clara y sencilla de explicar las cosas. Me encanta.

Gracias Bernardo.

Mon

Para los que usan windows prueben con set. En caso que export no les funcione!

set FLASK_DEBUG=1
  • Esto es en windows
    set FLASK_APP=myapp
    set FLASK_APP=rest_registro_historico.py
    set FLASK_DEBUG=1

  • Esto es en linux o mac
    export FLASK_APP=myapp
    export FLASK_APP=rest_registro_historico.py
    export FLASK_DEBUG=1

I had problems with the environment variables, if you are using windows instead of use export, use set:

set "FLASK_DEBUG=1"

or add:

if __name__ == "__main__":
	app.run(debug=True)

Hola les recomiendo instalar adicionalmente a flask python-dotenv
es una herramienta que nos ayuda a declarar variables de entorno .
Por que si se dieron cuenta esas variables que exportamos solo viven en esa sesión de terminal.

python-dotenv

Tengo un problema, no puedo añadir nada de variables en windows con SET, no funciona, intenté corriendo en la terminal python main.py
con estas configuraciones en el código:

from flask import Flask 
app = Flask(__name__)

if __name__ == "__main__":
    app.run(debug=True)
@app.route('/')
def hello():
    return "Hello world flask :) changing"

Y todo bien, corre el server, pero a la hora de entrar a la URL dice que no encontró nada, sin embargo si le doy con el comando flask run en la terminal, sí que funciona ¿alguien sabe a qué se debe?

Todo esto me recuerda mucho a node, en especial esta clase a nodemon

Excelente me queda claro.

  • El debug es la forma para identificar y corregir errores de programación.
export FLASK_APP=main.py #app principal para ejecución
export FLASK_DEBUG=1 #active debug flask

Para MAC , asi queda listo el debug desde las lineas de codigo

if __name__ == '__main__':
    app.run(debug=True)

en windows
set FLASK_DEBUG=1

En win se crea con --> set FLASK_DEBUG=1

Cuando se activa el flag Debug , se detectan los cambios, es decir no es necesario reiniciar el servidor 😄

Hola compañeros, si alguien esta usando VS Code, y no detecta cambios en modo debug, asegúrense de tener seleccionado la shell correspondiente por default se establece en powershell, a menos que seleccionen git bash u otro shell de su preferencia.

Excelente

Quien te conoce nodemon

Para activar el modo debug en windows

Set “FLASK_ENV=development”

Para Windows

  • set FLASK_DEBUG=1
  • echo FLASK_DEBUG
  • flask run

Si estas usando WSL2 y vuelves a iniciar la consola las variables de entorno desaparecen por lo que hay que crear un archivo llamado server con extensión “sh” donde agregas las variables de entorno

export FLASK_APP=main.py
export FLASK_DEB=1

Y antes de ejecutar flask run escribe este comando para crear las variables desde el archivo server sh y asi no escribir de nuevo toda la variable

source server.sh

Algo que me ayuda en mis notas y poder seguir los pasos de los cursos es guardar todos los comandos que ingrese a un archivo txt

Con este comando: 35 es el numero de comandos anteriores y se guarda en el archivo “debbug_flask.txt” dentro del folder “Notes”

history 35 > Notes/debbug_flask.txt

esta es una opción de run

if __name__ == '__main__':
    app.run(debug=True)

Tengo instalado Python 3.8 y cada vez que detengo el servidor o hago cambios me sale error , Address already in use . -flask/venv/lib/python3.8/site-packages/click/core.py", line 754, in invoke
return __callback(*args, **kwargs)
File “/Users/osanchez/Documents/Cursos/platzi-flask/venv/lib/python3.8/site-packages/flask/cli.py”, line 853, in run_command
run_simple(
File “/Users/osanchez/Documents/Cursos/platzi-flask/venv/lib/python3.8/site-packages/werkzeug/serving.py”, line 984, in run_simple

Venir de fastAPI me hace ver esa clase muy fácil, espero equivocarme.

Windows 10 y PowerShell7, modo debug

$env:FLASK_DEBUG = 1

Me gusto mucho la forma de hacer debug.

Me fuera gustado que el curso llevara algun ejemplo de conexion a una DB, ya que llevo semanas tratando de realizar trabajos con bases de datos como sqlite y mysql. si alguien ya lo ha hecho le agradeceria si pudiera ayudarme.

gracias.

excelente!

Que excelente docente, muy bien explicado hasta ahora.

brutal!

Que hay con el error: No module named C:\www\env\Scripts\flask ???

activar el debugger y listo

Activado!

Listo, activado y probado.

Muy bien, probe y funciona perfecto.

Segun la documentacion oficial tambien es posible utilizar:
export FLASK_ENV=development

https://flask.palletsprojects.com/en/1.1.x/quickstart/#debug-mode

En el archivo que ejecutan para el entorno virtual al final de este pueden agregar las variables a exportar, con eso no hay necesidad de volverlas a exportar cada ves que se ejecuta el ambiente virtual.

source .venv/bin/activate

Excelente clase y excelente profesor. Muchas gracias Platzi.

Si alguno esta usando el ide **pycharm **
Al momento de crear el proyecto lo cree directamente con el ide.

sin embargo por mas que configuraba a nivel de aplicación el modo debug

if __name__ == '__main__':
    app.run(debug=True)

o

set FLASK_DEBUG=1

podía cambiar el modo, la solución fue ir a run/edit configurations y activar desde ahí el modo debug

La manera más practica para mi es usar el archivo .env y allí colocamos nuestras variables de entorno. Para porderlo usar en flask debemos instalar la lib https://pypi.org/project/python-dotenv/ y ya, cuando corramos el ```
fask run

Para los que usan windows y powershell el comando es
$env:FLASK_ENV = ‘development’

SUPER

Con este codigo tambien pueden encender el servidor con el debug ON

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello world Flask!!!


if __name__ == '__main__':
    app.run(debug=True)

'```

Para ver el valor de las variables FLASK_APP y FLASK_DEBUG en Windows, debes usar el siguiente comando:

  1. echo %FLASK_APP%
  2. echo %FLASK_DEBUG%

En general, puedes usar el comando echo seguido del nombre de la variable entre signos de porcentajes (echo %NOMBRE DE LA VARIABLE%)

  • Creo que una buena práctica es crear variables de entorno en un archivo .env y es algo que utilizan otros frameworks como laravel, nos permite tener un mejor control sin tener que estar exportando las variables de entorno desde la terminal y recordando como se llaman, también podemos activar el modo debug poniendo el modo de desarrollo.
    .
  1. Para cargarlas automáticamente usamos python-dotenv
pip install python-dotenv
  1. nuestro .env sería:
FLASK_APP=main.py
FLASK_ENV=development
//development

et voilà, nuestras variables de entorno están listas, esto también sirve para poner cosas más interesantes como nuestras bases de datos, en mi caso personal lo uso cuando pongo el token de un bot de discord jaja

hay alguna manera de que al guardar, se refresque solo el navegador?

en pycharm pueden configurar las variable asi:
Ingresar en Run/debug Configurations y en enviromen variables separar las variables con ; (PYTHONUNBUFFERED=1;FLASK_APP=main;FLASK_DEBUG=1)

como dato extra es importante saber que el modo debug no se puede correr en un ambiente de produccion ya que permite abrir una terminal del lado del cliente y ejecutar comandos en el servidor. a modo de prueba intenten provocar un error en su codigo y desde otro equipo habran la terminal del stack trace para importar la libreria os y apagar el equipo donde corre el servidor, si se podria hacer.