Watchdog: Monitoramento de arquivos em tempo real com Python

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução ao monitoramento do sistema de arquivos

No desenvolvimento de software moderno, monitorar alterações no sistema de arquivos é uma tarefa essencial. Rastrear criação, modificação, exclusão e movimentação de arquivos é necessário em diversos cenários: desde a execução automática de testes ao alterar o código até o monitoramento de logs em produção.

A biblioteca Watchdog é uma solução multiplataforma para Python que oferece monitoramento eficiente e confiável do sistema de arquivos com baixo custo operacional. Ela utiliza mecanismos nativos dos sistemas operacionais e fornece uma API uniforme para trabalhar com eventos do sistema de arquivos.

O que é Watchdog

Watchdog é uma biblioteca Python para monitoramento do sistema de arquivos em tempo real. Ela garante compatibilidade multiplataforma usando diferentes mecanismos de observação do sistema conforme o sistema operacional: inotify no Linux, FSEvents no macOS e ReadDirectoryChangesW no Windows.

Principais vantagens

A biblioteca oferece várias vantagens importantes em comparação com soluções caseiras ou ferramentas alternativas. Primeiro, garante alta performance ao usar APIs nativas do sistema em vez de consultas periódicas ao sistema de arquivos. Segundo, o Watchdog fornece uma interface uniforme para todas as plataformas suportadas, simplificando o desenvolvimento de aplicações multiplataforma.

Instalação e configuração

A instalação da biblioteca é feita da forma padrão via pip:

pip install watchdog

Para recursos adicionais, incluindo a ferramenta de linha de comando watchmedo, você pode instalar a versão estendida:

pip install watchdog[watchmedo]

A biblioteca não requer configuração adicional e está pronta para uso imediatamente após a instalação.

Arquitetura e componentes principais

O Watchdog é construído em torno de vários componentes-chave que trabalham juntos para fornecer monitoramento do sistema de arquivos.

Observer (Observador)

O Observer é o componente central do sistema de monitoramento. Ele inicia e gerencia o processo de observação, executando em uma thread separada para garantir a execução não bloqueante do programa principal. O Observer pode monitorar vários caminhos simultaneamente com diferentes manipuladores de eventos.

EventHandler (Manipulador de eventos)

O EventHandler define como o programa deve reagir a diferentes eventos do sistema de arquivos. Os desenvolvedores criam seus próprios manipuladores herdando da classe base FileSystemEventHandler e sobrescrevendo os métodos desejados.

Event (Eventos)

Os eventos são objetos que contêm informações sobre as alterações ocorridas no sistema de arquivos. Cada evento inclui o caminho do arquivo ou diretório, o tipo de operação e metadados adicionais.

Exemplos básicos de uso

Monitoramento simples

Veja um exemplo básico de criação de um sistema de monitoramento:

import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler

class BasicHandler(FileSystemEventHandler):
    def on_modified(self, event):
        if not event.is_directory:
            print(f"Arquivo modificado: {event.src_path}")
    
    def on_created(self, event):
        if not event.is_directory:
            print(f"Arquivo criado: {event.src_path}")

observer = Observer()
observer.schedule(BasicHandler(), path="./pasta_monitorada", recursive=True)
observer.start()

try:
    while True:
        time.sleep(1)
except KeyboardInterrupt:
    observer.stop()
    
observer.join()

Monitoramento com logging

Para um rastreamento mais detalhado dos eventos, você pode usar o logging integrado:

                    

Recommendations