Customize Consent Preferences

We use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below.

The cookies that are categorized as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site. ... 

Always Active

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

No cookies to display.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

No cookies to display.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

No cookies to display.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

No cookies to display.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

No cookies to display.

Cómo Manejar Errores y Enviar Correos Electrónicos en Caso de Excepciones en FastAPI

Tiempo de lectura: 2 minutos

En el desarrollo de API con FastAPI en Python, la gestión adecuada de errores es crucial para asegurar un funcionamiento sin problemas. En este tutorial, aprenderemos a implementar un sistema de manejo de excepciones que enviará automáticamente un correo electrónico al administrador cuando ocurra un error en nuestra API.

Paso 1: Configuración del Archivo handler.py

En primer lugar, crearemos un archivo llamado handler.py que contendrá nuestras funciones de manejo de excepciones y envío de correos. Este archivo se puede importar en todos los módulos de nuestra aplicación.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# handler.py
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
# Establecer la dirección de correo electrónico a la que se enviará el mensaje
destinatario = 'contacto@email.com'
# Función para enviar un correo electrónico
def enviar_correo(mensaje, destinatario):
# Configuración del servidor de correo
servidor_correo = smtplib.SMTP('smtp.tu-servidor.com', 587)
servidor_correo.starttls()
servidor_correo.login('tu-correo@gmail.com', 'tu-contrasena')
# Crear el mensaje de correo electrónico
mensaje_correo = MIMEMultipart()
mensaje_correo['From'] = 'tu-correo@gmail.com'
mensaje_correo['To'] = destinatario
mensaje_correo['Subject'] = 'Error en la API de FastAPI'
mensaje_correo.attach(MIMEText(mensaje, 'plain'))
# Enviar el correo electrónico
servidor_correo.send_message(mensaje_correo)
servidor_correo.quit()
# Función para manejar excepciones
def manejar_excepcion(excepcion):
# Obtener información sobre la excepción
mensaje = f'Se ha producido un error en la API de FastAPI.\n\n' \
f'Mensaje de error: {excepcion}\n'
# Enviar un correo electrónico con la información del error
enviar_correo(mensaje, destinatario)
# Puedes registrar el error en algún otro lugar, como un archivo de registro
# Puedes personalizar la respuesta de error a la API si lo deseas
return {'error': 'Se ha producido un error. El administrador ha sido notificado.'}
# handler.py import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart # Establecer la dirección de correo electrónico a la que se enviará el mensaje destinatario = 'contacto@email.com' # Función para enviar un correo electrónico def enviar_correo(mensaje, destinatario): # Configuración del servidor de correo servidor_correo = smtplib.SMTP('smtp.tu-servidor.com', 587) servidor_correo.starttls() servidor_correo.login('tu-correo@gmail.com', 'tu-contrasena') # Crear el mensaje de correo electrónico mensaje_correo = MIMEMultipart() mensaje_correo['From'] = 'tu-correo@gmail.com' mensaje_correo['To'] = destinatario mensaje_correo['Subject'] = 'Error en la API de FastAPI' mensaje_correo.attach(MIMEText(mensaje, 'plain')) # Enviar el correo electrónico servidor_correo.send_message(mensaje_correo) servidor_correo.quit() # Función para manejar excepciones def manejar_excepcion(excepcion): # Obtener información sobre la excepción mensaje = f'Se ha producido un error en la API de FastAPI.\n\n' \ f'Mensaje de error: {excepcion}\n' # Enviar un correo electrónico con la información del error enviar_correo(mensaje, destinatario) # Puedes registrar el error en algún otro lugar, como un archivo de registro # Puedes personalizar la respuesta de error a la API si lo deseas return {'error': 'Se ha producido un error. El administrador ha sido notificado.'}
# handler.py
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

# Establecer la dirección de correo electrónico a la que se enviará el mensaje
destinatario = 'contacto@email.com'

# Función para enviar un correo electrónico
def enviar_correo(mensaje, destinatario):
    # Configuración del servidor de correo
    servidor_correo = smtplib.SMTP('smtp.tu-servidor.com', 587)
    servidor_correo.starttls()
    servidor_correo.login('tu-correo@gmail.com', 'tu-contrasena')

    # Crear el mensaje de correo electrónico
    mensaje_correo = MIMEMultipart()
    mensaje_correo['From'] = 'tu-correo@gmail.com'
    mensaje_correo['To'] = destinatario
    mensaje_correo['Subject'] = 'Error en la API de FastAPI'
    mensaje_correo.attach(MIMEText(mensaje, 'plain'))

    # Enviar el correo electrónico
    servidor_correo.send_message(mensaje_correo)
    servidor_correo.quit()

# Función para manejar excepciones
def manejar_excepcion(excepcion):
    # Obtener información sobre la excepción
    mensaje = f'Se ha producido un error en la API de FastAPI.\n\n' \
              f'Mensaje de error: {excepcion}\n'

    # Enviar un correo electrónico con la información del error
    enviar_correo(mensaje, destinatario)

    # Puedes registrar el error en algún otro lugar, como un archivo de registro

    # Puedes personalizar la respuesta de error a la API si lo deseas

    return {'error': 'Se ha producido un error. El administrador ha sido notificado.'}

Paso 2: Uso del Archivo handler.py en Tu Aplicación FastAPI

Ahora, en cada uno de tus módulos de FastAPI, importa el archivo handler.py al principio para habilitar el manejo de excepciones y el envío de correos electrónicos.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# main.py
from fastapi import FastAPI
from handler import manejar_excepcion
app = FastAPI()
# Establecer la función de manejo de excepciones personalizada
app.add_exception_handler(Exception, manejar_excepcion)
# Definir tus rutas y lógica de la aplicación a continuación
# main.py from fastapi import FastAPI from handler import manejar_excepcion app = FastAPI() # Establecer la función de manejo de excepciones personalizada app.add_exception_handler(Exception, manejar_excepcion) # Definir tus rutas y lógica de la aplicación a continuación
# main.py
from fastapi import FastAPI
from handler import manejar_excepcion

app = FastAPI()

# Establecer la función de manejo de excepciones personalizada
app.add_exception_handler(Exception, manejar_excepcion)

# Definir tus rutas y lógica de la aplicación a continuación

Conclusión:

Con estos pasos, has implementado un sistema básico pero efectivo de manejo de excepciones en tu aplicación FastAPI en Python, que enviará automáticamente correos electrónicos al administrador cuando se produzca un error. Asegúrate de personalizar las funciones según tus necesidades específicas y ten en cuenta que este es solo un punto de partida; puedes expandir y mejorar esta funcionalidad según los requisitos de tu proyecto.

¡Ahora estás mejor equipado para mantener y administrar tu API FastAPI de manera más efectiva!

0

Deja un comentario