Yuri Almeida
Web Developement

Automatizando Notificaciones de Escritorio en Python con auto-notifier

Yuri Almeida
<!DOCTYPE html>

Automatizando Notificaciones de Escritorio en Python con auto-notifier

Cuando trabajas con dos monitores, es fácil iniciar un script largo en una terminal y luego cambiar tu atención a otra tarea. A mí me pasa seguido: lanzo un proceso en Python, me pongo a hacer otra cosa, y cuando regreso… ya había terminado (o fallado) hace rato.

auto-notifier fue creado para ese escenario. Envuelve tu función o bloque de código, detecta si todo terminó bien o con error, y envía una notificación nativa en el escritorio. Usa dos conceptos muy conocidos en Python — decoradores y context managers — sin requerir configuraciones adicionales.


[ Espacio reservado para imagen de la notificación ] Ejemplo: ventana emergente después de finalizar el script


🚀 Instalación

pip install auto-notifier

auto-notifier utiliza notify-py internamente para enviar notificaciones nativas (Windows, macOS, Linux).


🧭 Cómo Funciona

InterfazIdeal Para
@notify_when_doneMonitorear una función
notify_on_complete()Monitorear un bloque de código

Ambos detectan:

  • ✅ Finalización exitosa
  • ❌ Excepciones (con alerta de error)
  • ⏱️ Tiempo de ejecución registrado

Las excepciones no se ocultan — verás el traceback normalmente en la terminal.


🧩 Uso con Decorator

from auto_notifier import notify_when_done
import time

@notify_when_done(
    title=&quot;Backup completado&quot;,
    message=&quot;La copia de seguridad terminó exitosamente.&quot;,
    error_title=&quot;Error en el backup&quot;
)
def ejecutar_backup():
    time.sleep(5)  # simula trabajo
    # raise Exception(&quot;Error de disco&quot;)  # probar fallo
    return &quot;ok&quot;

ejecutar_backup()

Qué ocurre:

  • Éxito → Notificación “Backup completado”
  • Error → Notificación “Error en el backup”, excepción relanzada

📎 Uso con Context Manager

from auto_notifier import notify_on_complete
import time

with notify_on_complete(title=&quot;Importación finalizada&quot;):
    time.sleep(3)
    print(&quot;Importación completada&quot;)

Ideal para scripts o notebooks con bloques largos.


🎛️ Personalizando la Notificación

ParámetroDescripción
titleTítulo en caso de éxito
messageMensaje en caso de éxito
error_titleTítulo en caso de error
error_messageMensaje en caso de error
icon_pathÍcono personalizado
app_nameNombre en el centro de notificaciones

Ejemplo con ícono:

@notify_when_done(
    title=&quot;Reporte generado&quot;,
    message=&quot;Métricas mensuales listas.&quot;,
    icon_path=&quot;icons/chart.png&quot;
)
def generar_reporte():
    ...

🛠 Decorators y Context Managers

  • Decorator: Envuelve la función, mide el tiempo, captura errores y envía la notificación
  • Context Manager: Usa __enter__ / __exit__ para asegurar la notificación incluso ante excepciones

No hay hilos, servicios ni configuración extra — solo flujo Python.


🔁 Ejemplo Completo (Estilo Pipeline)

from auto_notifier import notify_when_done, notify_on_complete
import pandas as pd
import time

@notify_when_done(title=&quot;Datos limpios&quot;, error_title=&quot;Error en limpieza&quot;)
def limpiar_datos(ruta):
    df = pd.read_csv(ruta)
    time.sleep(4)
    return df.dropna()

with notify_on_complete(title=&quot;Pipeline ETL finalizado&quot;):
    limpio = limpiar_datos(&quot;raw.csv&quot;)
    limpio.to_csv(&quot;cleaned.csv&quot;, index=False)

🧭 Cuándo Usarlo

  • Scripts largos en terminal
  • Procesamiento de datos / scraping
  • Entrenamiento de modelos
  • Backups o exportaciones

Pensado para uso local, con notificaciones del sistema.


📌 Resumen

auto-notifier agrega notificaciones a funciones o bloques de código usando decorators o context managers. Te permite alejarte del terminal y aun así saber exactamente cuándo terminó — o falló — un proceso.


PyPI: https://pypi.org/project/auto-notifier/ GitHub: https://github.com/yalmeidarj/auto-notifier


Si ejecutas scripts y cambias de tarea, esta herramienta elimina el “¿ya habrá terminado?”

Automatizando Notificaciones de Escritorio en Python con auto-notifier | Blog