A Python package for tracking and handling errors with support for multiple providers like Kafka and Email.
Project description
🔥 error_dispatcher_client
error_dispatcher_client é um pacote Python poderoso para rastreamento e tratamento de erros em aplicações web. Ele captura exceções ocorridas em APIs desenvolvidas com Flask ou FastAPI e permite enviar relatórios de erros para diversos provedores, como Kafka, Discord e E-mail. Com suporte a múltiplos provedores simultâneos, é fácil adaptar o pacote às suas necessidades específicas.
✨ Principais Funcionalidades
- Captura automática de exceções em endpoints de Flask e FastAPI.
- Suporte a múltiplos provedores para notificação:
- Kafka: Envia mensagens de erro para um tópico Kafka.
- Discord: Envia mensagens de erro via webhook
- E-mail: Envia relatórios detalhados via SMTP.
- Fácil extensão para novos provedores personalizados.
- Configuração simples e integração prática.
🛠️ Instalação
pip install error_dispather_client
🚀 Como Usar
Com Flask
from flask import Flask
from error_dispatcher_client import FlaskMetrics
from error_dispatcher_client.providers import KafkaProvider, EmailProvider
app = Flask(__name__)
kafka_provider = KafkaProvider(bootstrap_servers="localhost:9092", topic="errors")
email_provider = EmailProvider(
smtp_server="smtp.gmail.com",
smtp_port=587,
username="seuemail@gmail.com",
password="suasenha"
)
metrics = FlaskMetrics(providers=[kafka_provider, email_provider])
metrics.init_app(app)
@app.route("/")
def index():
raise ValueError("Teste de erro")
if __name__ == "__main__":
app.run(debug=True)
Com FastAPI
import uvicorn
from fastapi import FastAPI
from error_dispatcher_client import FastAPIMetrics
from error_dispatcher_client.providers import KafkaProvider, EmailProvider
app = FastAPI()
kafka_provider = KafkaProvider(bootstrap_servers="localhost:9092", topic="errors")
email_provider = EmailProvider(
smtp_server="smtp.gmail.com",
smtp_port=587,
username="seuemail@gmail.com",
password="suasenha"
)
metrics = FastAPIMetrics(providers=[kafka_provider, email_provider])
metrics.init_app(app)
@app.get("/")
async def index():
raise ValueError("Teste de erro")
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8000)
🌟 Recursos Avançados
Configuração de Múltiplos Provedores
Você pode usar múltiplos provedores simultaneamente, personalizando como os erros são processados.
providers = [
KafkaProvider(
bootstrap_servers="localhost:9092",
topic="errors"
),
EmailProvider(
smtp_server="smtp.gmail.com",
smtp_port=587,
username="seuemail@gmail.com",
password="suasenha"
)
]
metrics = FlaskMetrics(providers=providers)
metrics.init_app(app)
Configuração de Template de mensagem
Você pode usar da maneira que quiser os parametros a serem enviados pelos provedores, personalizando quais paramentros serao enviados, ocultando alguns por exemplo.
from error_dispatcher_client import FastAPIMetrics
from error_dispatcher_client.templates import CustomTemplate
from error_dispatcher_client.providers import KafkaProvider, EmailProvider, DiscordProvider
message_template = CustomTemplate(
{
"app_name" : None,
"endpoint" : None,
"full_url" : None,
"method" : None,
"status_code" : None,
"duration" : None,
"headers" : None,
"query_params" : None,
#"request_body" : None,
"client_ip" : None,
"user_agent" : None,
"error_details" : None,
"error_type" : None,
#"traceback" : None
"timestamp" : None
}
)
app = FastAPI()
discord_provider = DiscordProvider(
webhook_url="https://discord.com/api/webhooks/1328369709577666633/hyiNF9Xr97YfJDnNF89GG4-e5v1sT-p-v1P32KhqWwM3F4xs3JyK1BvND8TYnA7LFj7r",
message_template=message_template
)
metrics = FastAPIMetrics(providers=[discord_provider, kafka_provider], app_name="api-plant-manager")
metrics.init_app(app)
...
Criando Provedores Personalizados
Você pode adicionar novos provedores implementando a interface BaseProvider:
from error_dispatcher_client.providers import ErrorProvider
class CustomProvider(ErrorProvider):
def send(self, error_data: dict):
print("Erro recebido:", error_data)
📦 Estrutura do Projeto
error_dispatcher_client/
│
├── error_dispatcher_client/ # Código-fonte principal do pacote
│ └── templates/ # Implementações de templates de menssagem
│ │ ├── __init__.py
│ │ └── base_template.py # Interface base para mensagens
│ └── providers/ # Implementações de provedores
│ │ ├── __init__.py
│ │ ├── base_provider.py # Interface base para provedores
│ │ ├── kafka_provider.py # Provedor Kafka
│ │ ├── discord_provider.py # Provedor Discord
│ │ └── email_provider.py # Provedor de E-mail
│ ├── __init__.py
│ ├── flask_metrics.py # Integração com Flask
│ ├── fastapi_metrics.py # Integração com FastAPI
│ └── base_metrics.py # Integração Base Temaplate
│
├── examples/ # Implementacao exemplo
│ ├── fastapi_example.py # Exemplo fastapi
│ └── test_email.py # Exemplo flask
│
├── tests/ # Testes unitários
│ ├── __init__.py
│ ├── test_flask.py
│ ├── test_fastapi.py
│ ├── test_kafka.py
│ └── test_email.py
│
├── README.md # Documentação do projeto
├── requirements.txt # Dependencias do pacote
└── setup.py # Configurações do pacote
🏗️ Contribuindo
Contribuições são bem-vindas! Para contribuir:
- Faça um fork do repositório.
- Crie um branch para sua feature/bugfix (
git checkout -b minha-feature). - Envie um pull request.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file error_dispatcher_client-1.0.8.tar.gz.
File metadata
- Download URL: error_dispatcher_client-1.0.8.tar.gz
- Upload date:
- Size: 12.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
20862f472ae53a096a568005f54b7b65a31839d39bb9e7b2db601656f8cf6e73
|
|
| MD5 |
ef9d5aa5c6045487848cff386cfca390
|
|
| BLAKE2b-256 |
794848d489aee52c6072aeabc6969d662435ce7ae4a0865579ceff8550e27525
|
File details
Details for the file error_dispatcher_client-1.0.8-py3-none-any.whl.
File metadata
- Download URL: error_dispatcher_client-1.0.8-py3-none-any.whl
- Upload date:
- Size: 14.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
38aa427918e8da5441b42c0c5ad83c7ed0a0cbce6bf48f7fa05851d5ac80bcae
|
|
| MD5 |
f5bff876642d79e8031d16f5dc796ee8
|
|
| BLAKE2b-256 |
075ba1ab6d7f3a32feb884fb43874d570402f480028ef9df27d069198c610758
|