Skip to main content

CscTrackerPyCore

PyPI version Python versions License: MIT Code style: black

CscTrackerPyCore é uma biblioteca Python base desenvolvida para padronizar e acelerar o desenvolvimento de microserviços. Ela oferece integração nativa com Flask, fornecendo recursos essenciais como logging estruturado em JSON, telemetria com Prometheus, documentação automática via Swagger e gerenciamento de tarefas agendadas.

Principais Funcionalidades

  • Starter Facilitado: Inicialização rápida de aplicações Flask com suporte a CORS e tratamento de variáveis de ambiente.
  • Logging Estruturado: Formatação automática de logs em JSON com inclusão de requestId, appName e appVersion para melhor rastreabilidade.
  • Observabilidade:
    • Integração nativa com Prometheus para coleta de métricas de endpoints.
    • Interceptor de Requisições: Registro detalhado de chamadas HTTP (método, path, status, duração) com opção de persistência remota para auditoria.
  • Documentação Automática: Geração de especificação Swagger (OpenAPI) simplificada.
  • Processamento em Background: Integração com csctracker-queue-scheduler para execução de tarefas assíncronas e agendadas.
  • Graceful Shutdown para Docker Swarm: Encerramento controlado em rolling updates, aguardando término de requisições HTTP e esvaziamento total da fila do scheduler antes do encerramento do processo.
  • Repositórios Remotos: Abstração para comunicação entre serviços via HTTP com tratamento de headers e correlação.

Requisitos

  • Python 3.9+
  • Flask
  • Flask-CORS
  • Prometheus Flask Exporter
  • Flask Swagger Generator
  • Python JSON Logger
  • Python Dotenv

Instalação

As dependências podem ser instaladas via pip:

pip install csctracker-py-core

Ou via requirements.txt:

pip install -r requirements.txt

Configuração

A biblioteca é configurada principalmente via variáveis de ambiente, suportando arquivos .env localizados na pasta config/ (ex: config/dev.env).

Variáveis de Ambiente Suportadas

Variável Descrição Exemplo
PROFILE Perfil de configuração (define o arquivo .env) dev
PORT Porta de execução do servidor Flask 5000
LOG_LEVEL Nível de detalhamento do log INFO, DEBUG
LOG_REQUEST_BODY Se True, inclui o corpo da requisição nos logs True
LOG_RESPONSE_BODY Se True, inclui o corpo da resposta nos logs False
URL_BFF URL base para persistência de logs de requisição http://api-gateway/
API_TOKEN Token de autorização para chamadas externas seu_token_aqui
SHUTDOWN_TIMEOUT Tempo limite (segundos) para conclusão de requisições e tarefas em background durante o shutdown 30
DEBUG Ativa o modo debug do Flask se definido como 1 0

Uso Didático

1. Inicialização do Starter

A classe Starter centraliza a configuração do Flask.

from csctracker_py_core.starter import Starter

# Inicializa o starter (static_folder define a pasta de arquivos estáticos)
# save_request=True ativa a persistência remota de logs de requisição
starter = Starter(save_request=False)

# Obtém a instância do Flask configurada
app = starter.get_app()

@app.route('/')
def hello():
    return {"message": "CscTrackerPyCore is running!"}

if __name__ == '__main__':
    starter.start()

2. Logging e Interceptação

Uma vez iniciado o Starter, todos os logs do sistema usarão o formato JSON e as requisições serão interceptadas automaticamente para gerar telemetria.

3. Acesso aos Repositórios

# Acesso ao repositório HTTP para chamadas externas padronizadas
http_repo = starter.get_http_repository()

4. Graceful Shutdown e Ganchos Customizados

Ao receber sinais como SIGTERM (pelo Docker Swarm) ou SIGINT (Ctrl+C), a aplicação:

  1. Aguarda a finalização de todas as requisições HTTP ativas.
  2. Aguarda o esvaziamento completo e processamento da fila do SchedulerService.
  3. Executa ganchos de limpeza customizados registrados via starter.register_shutdown_hook(...).
  4. Finaliza o processo com segurança respeitando o SHUTDOWN_TIMEOUT.
def cleanup_resources():
    print("Fechando conexões e pools externos...")

starter.register_shutdown_hook(cleanup_resources)

Implantação no Docker Swarm

Para garantir atualizações contínuas (rolling updates zero-downtime), configure o docker-compose.yml da stack no Swarm utilizando order: start-first e defina stop_grace_period com um valor superior ao SHUTDOWN_TIMEOUT:

version: "3.8"

services:
  notification-ai:
    image: krlsedu/csctracker-notification-ai:26.37.002
    stop_grace_period: 45s # Superior ao SHUTDOWN_TIMEOUT da aplicação
    environment:
      - SHUTDOWN_TIMEOUT=30
      - URL_REPOSITORY=http://bff:8080/repository-clickhouse/
      - URL_BFF=http://bff:8080/
    networks:
      - swarm_network
    deploy:
      replicas: 2
      update_config:
        parallelism: 1
        delay: 10s
        order: start-first

Estrutura do Projeto

  • Starter: Orquestrador principal que configura Flask, CORS, Métricas, Swagger e Graceful Shutdown.
  • Configs: Gerencia o carregamento de variáveis de ambiente e a configuração do logger JSON.
  • GracefulShutdown: Gerenciador de encerramento suave e sincronização de tarefas/requisições.
  • Interceptor: Middleware Flask que captura dados de performance, telemetria e controla requisições ativas.
  • HttpRepository: Facilita requisições HTTP externas com injeção de headers de segurança e rastreio.
  • RequestInfo: Utilitário para gerenciar IDs de correlação (Correlation IDs) entre threads.

Licença

Este projeto está sob a licença MIT. Consulte o arquivo LICENSE para mais detalhes.

Metadata

Release files for csctracker-py-core 26.37.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for csctracker-py-core 26.37.4
File Size Uploaded
csctracker_py_core-26.37.4.tar.gz 18.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for csctracker-py-core 26.37.4
File Interpreter ABI Platform
csctracker_py_core-26.37.4-py3-none-any.whl Python 3 none any Details

Total release size: 36.8 kB

Release files / csctracker_py_core-26.37.4.tar.gz

Download URL csctracker_py_core-26.37.4.tar.gz
Size 18.6 kB
Tags Source
SHA-256 checksum
How to use checksums
fc34b4137eca49b53b5a75cbe25cc5ec5db42e7e2d7fe46409aa19dec7ccb093
BLAKE2b-256 checksum
How to use checksums
0a0f67e187d8251c251a6930d93277d18d8dac6f8246945160a3a6a2e5b6580d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / csctracker_py_core-26.37.4-py3-none-any.whl

Download URL csctracker_py_core-26.37.4-py3-none-any.whl
Size 18.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b9895f1b687ba376db716988ed29a32a83a1f5c354009385eb2b5dee5fdcac46
BLAKE2b-256 checksum
How to use checksums
04ff5d4eb2d04b5f913fb03d74be76113fed13d7b955b1c84678eb15547f16a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release history Release notifications | RSS feed

This release

26.37.4 This release

2 release files

26.9.3

2 release files

26.9.2

2 release files

26.9.1

2 release files

26.7.7

2 release files

26.7.4

2 release files

26.7.3

2 release files

26.7.2

1 release file

26.7.1

1 release file

24.3.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page