Crea una cuenta o inicia sesi贸n

隆Contin煤a aprendiendo sin ning煤n costo! 脷nete y comienza a potenciar tu carrera

Aprende todo un fin de semana sin pagar una suscripci贸n 馃敟

Aprende todo un fin de semana sin pagar una suscripci贸n 馃敟

Reg铆strate

Comienza en:

0D
13H
51M
18S
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 53

Preguntas 7

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

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=鈥渄evelopment鈥

En Windows:

set 鈥淔LASK_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

  • 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

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

set FLASK_DEBUG=1

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?

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)

Si usan pycharm pueden crear la configuraci贸n para ejecutar la aplicaci贸n y usar el modo debugging (para el paso a paso en el c贸digo)
Ejemplo configuraci贸n:

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

esta es una opci贸n de run

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

Cuidado con dejar esta variable de ambiente en producci贸n. Tiene una vulnerabilidad grande.

Dejo la prueba de concepto que hizo John Hammond
https://www.youtube.com/watch?v=jwBRgaIRdgs

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

Crear el Entorno Virtual en windows:

Para crear un nuevo virtualenv, necesitas abrir una terminal command prompt y ejecutar

python3 -m venv myvenv>

Inicia el entorno virtual ejecutando:

venv\Scripts\activate

Instalar flask dentro del entorno

pip3 install flask

Activar Flask

python3 -m pip install -U Flask

Visualizar las dependencias que estan instalados dentro del ambiente virtual

pip freeze

crear un archivo con requerimientos

pip freeze > requerimientos.txt

Instalar aplicaciones desde el archivo requerimientos.txt

pip install -r .\requerimientos.txt

Activar modo de depuracion

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

Quien te conoce nodemon

Para activar el modo debug en windows

Set 鈥淔LASK_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 鈥渄ebbug_flask.txt鈥 dentro del folder 鈥淣otes鈥

history 35 > Notes/debbug_flask.txt

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 = 鈥榙evelopment鈥

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.