Yuri Almeida
Web Developement

Automatizando Notificações Desktop em Python com auto-notifier

Yuri Almeida
<!DOCTYPE html>

Automatizando Notificações Desktop em Python com auto-notifier

Quando você trabalha com dois monitores, é comum iniciar um script demorado em um terminal e, logo depois, mudar o foco para outra tarefa. Já me vi várias vezes escrevendo ou navegando em outro monitor enquanto um script estava rodando — e, quando percebi, ele já tinha terminado (ou falhado) há um bom tempo.

auto-notifier foi criado exatamente para esse cenário. Ele envolve sua função ou bloco de código, detecta se tudo terminou bem ou com erro, e envia uma notificação no desktop. Ele utiliza dois conceitos bem conhecidos em Python — decorators e context managers — sem exigir configurações extras.


[ Espaço reservado para imagem da notificação ]
Exemplo: pop-up de notificação após conclusão do script


🚀 Instalação

pip install auto-notifier

auto-notifier usa notify-py internamente para enviar notificações nativas (Windows, macOS, Linux).


🧩 Como Funciona

InterfaceMelhor Para
@notify_when_doneMonitorar uma função
notify_on_complete()Monitorar um bloco de código

Ambos detectam:

  • ✅ Conclusão com sucesso
  • ❌ Exceções (com alerta de falha)
  • ⏱️ Tempo de execução (internamente medido)

As exceções não são suprimidas — você ainda verá o traceback no terminal.


🧰 Usando o Decorator

from auto_notifier import notify_when_done
import time

@notify_when_done(
    title=&quot;Backup concluído&quot;,
    message=&quot;Backup finalizado com sucesso.&quot;,
    error_title=&quot;Falha no backup&quot;
)
def executar_backup():
    time.sleep(5)  # simula trabalho
    # raise Exception(&quot;Erro no disco&quot;)  # testar falha
    return &quot;ok&quot;

executar_backup()

O que acontece:

  • Sucesso → Notificação “Backup concluído”
  • Erro → Notificação “Falha no backup”, exceção relançada

📓 Usando o Context Manager

from auto_notifier import notify_on_complete
import time

with notify_on_complete(title=&quot;Importação finalizada&quot;):
    time.sleep(3)
    print(&quot;Importação concluída&quot;)

Perfeito para trechos de script ou notebooks.


🎛️ Personalizando Notificações

ParâmetroDescrição
titleTítulo no sucesso
messageTexto no sucesso
error_titleTítulo no erro
error_messageTexto no erro
icon_pathÍcone personalizado
app_nameNome exibido na central de notificações

Exemplo com ícone:

@notify_when_done(
    title=&quot;Relatório pronto&quot;,
    message=&quot;Métricas mensais geradas.&quot;,
    icon_path=&quot;icons/chart.png&quot;
)
def gerar_relatorio():
    ...

🧠 Decorators e Context Managers

  • Decorator: Envolve a função, mede tempo, captura erros e envia notificação
  • Context Manager: Usa __enter__ / __exit__ para garantir notificação mesmo com exceções

Sem threads, serviços ou configurações externas — apenas fluxo Python.


🔧 Exemplo Completo (Estilo Pipeline)

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

@notify_when_done(title=&quot;Dados limpos&quot;, error_title=&quot;Erro na limpeza&quot;)
def limpar_dados(caminho):
    df = pd.read_csv(caminho)
    time.sleep(4)
    return df.dropna()

with notify_on_complete(title=&quot;Pipeline ETL finalizada&quot;):
    limpo = limpar_dados(&quot;raw.csv&quot;)
    limpo.to_csv(&quot;cleaned.csv&quot;, index=False)

🧭 Quando Usar

  • Scripts longos no terminal
  • Processamento de dados / scraping
  • Treinamento de modelos
  • Backups ou exportações

Ideal para uso local, com notificações do sistema.


🧾 Resumo

auto-notifier adiciona notificações em funções ou blocos de código usando decorators ou context managers. Permite que você se afaste do terminal e ainda saiba exatamente quando algo terminou — ou falhou.


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


Se você inicia scripts e muda para outras tarefas, essa ferramenta evita adivinhações.

Automatizando Notificações Desktop em Python com auto-notifier | Blog