Skip to main content

SDK de logging resiliente para RPAs no backend rpa_logs

Project description

tenant-rpa-sdk

SDK Python para RPAs com foco em logging resiliente no backend rpa_logs, sem acoplamento ao tenant-system.

Objetivo

  • Padronizar logs de RPAs em rpa_logs
  • Evitar perda de eventos em indisponibilidade temporaria do DB
  • Fornecer API simples para uso em qualquer automacao Python

Escopo

  • Somente logging (sem lifecycle start/heartbeat/finish)
  • Postgres-only (psycopg)
  • Dedupe por idempotency_key
  • Fallback local em JSONL + reconciliacao por flush_pending()

Instalacao

Desenvolvimento local

cd tenant-rpa-sdk
python -m venv .venv
source .venv/bin/activate
pip install -U pip
pip install -e .[dev]

Consumo em RPAs (producao)

Use versao pinada:

tenant-rpa-sdk==0.1.0

Canal 1 (oficial) - PyPI publico:

pip install tenant-rpa-sdk==0.1.0

Canal 2 - package no GitHub (asset da Release):

pip install "https://github.com/tech-ops-ai/tenant-rpa-sdk/releases/download/tenant-rpa-sdk-v0.1.0/tenant_rpa_sdk-0.1.0-py3-none-any.whl"

Se seu ambiente usa mirror privado, ajuste --index-url/--extra-index-url no pip.

Variaveis de ambiente

  • MAESTRO_PROD ou MAESTRO
  • RPA_LOGS_TABLE (default rpa_logs)
  • RPA_LOG_SOURCE (default rpa.app)
  • RPA_LOG_FALLBACK_PATH (default /var/log/tenant-rpa/pending_rpa_logs.jsonl)
  • RPA_LOG_FLUSH_ON_START (default true)
  • RPA_LOG_DB_TIMEOUT_SECONDS (default 5)
  • RPA_LOG_MAX_MESSAGE_CHARS (default 2000)
  • RPA_LOG_MAX_METADATA_BYTES (default 32768)

Conexao Maestro

Formato esperado:

postgres,<host>,<port>,<database>,<user>,<password>

Alias encadeado aceito:

MAESTRO_PROD=MAESTRO
MAESTRO=postgres,db.host,5432,maestro,rpa,***

Se MAESTRO_PROD nao existir, o SDK tenta automaticamente MAESTRO.

Uso rapido

from tenant_rpa_sdk import TenantBackendLogger

logger = TenantBackendLogger(
    project_name="c6-egv",
    source="rpa.cart-abandonment",
    execution_id=123,
    db_alias_env="MAESTRO_PROD",
    fallback_path="/tmp/pending_rpa_logs.jsonl",
    echo_stdout=True,
    flush_on_start=True,
)

logger.info("RPA iniciado", metadata={"step": "bootstrap"})
logger.warning("API lenta", metadata={"latency_ms": 1200})
logger.error("Falha em consulta", metadata={"query_id": "q-09", "token": "secret"})

result = logger.flush_pending(limit=200)
print(result)

API publica

Classe principal: tenant_rpa_sdk.logger.TenantBackendLogger

Metodos:

  • debug(message, *, event_type="APP", metadata=None, execution_id=None)
  • info(...)
  • warning(...)
  • error(...)
  • critical(...)
  • log(level, message, *, event_type="APP", metadata=None, execution_id=None)
  • bind_execution(execution_id)
  • flush_pending(limit=200) -> dict

Contrato de fallback JSONL

Cada linha contem:

  • idempotency_key
  • created_at
  • payload
  • attempt
  • last_error
  • next_retry_at

Versionamento e release

  • Politica: SemVer estrito (MAJOR.MINOR.PATCH)
  • Tags de release: tenant-rpa-sdk-vX.Y.Z
  • Publicacao automatica no PyPI por GitHub Actions ao criar tag valida
  • Os artefatos .whl e .tar.gz tambem sao anexados na GitHub Release da mesma tag

Consulte:

  • CHANGELOG.md
  • CONTRIBUTING.md
  • docs/versionamento.md
  • docs/release.md
  • docs/uso-em-rpas.md
  • docs/faq.md

Testes

Unitarios:

pytest tests/unit

Integracao (Postgres real, execucao opt-in):

export TENANT_RPA_SDK_INTEGRATION=true
pytest tests/integration

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

tenant_rpa_sdk-0.1.0.tar.gz (10.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tenant_rpa_sdk-0.1.0-py3-none-any.whl (11.9 kB view details)

Uploaded Python 3

File details

Details for the file tenant_rpa_sdk-0.1.0.tar.gz.

File metadata

  • Download URL: tenant_rpa_sdk-0.1.0.tar.gz
  • Upload date:
  • Size: 10.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for tenant_rpa_sdk-0.1.0.tar.gz
Algorithm Hash digest
SHA256 6c9788ff7e2877c6025526f0abbdecfc6d8b4b1b5c2f66619a1c2d51543006d1
MD5 4c7d220fbbedf9e3870e5e4c948d5850
BLAKE2b-256 18effc1859ee284de8d4c65e15a4ce07e9dafecfc5bda6470331edd2b5d03a6a

See more details on using hashes here.

Provenance

The following attestation bundles were made for tenant_rpa_sdk-0.1.0.tar.gz:

Publisher: python-release.yml on tech-ops-ai/tenant-rpa-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tenant_rpa_sdk-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: tenant_rpa_sdk-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 11.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for tenant_rpa_sdk-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9f1a8c6a92e769cf4a51c99fccfac376d43a52c668e41be329ca0db32036e7ac
MD5 f9caca031c9ddbf6dcfdff581ddf65ce
BLAKE2b-256 5b7b5eb58954781bc6bbcd560fe74ccc562a825c3e473d808bfa551ca08b195b

See more details on using hashes here.

Provenance

The following attestation bundles were made for tenant_rpa_sdk-0.1.0-py3-none-any.whl:

Publisher: python-release.yml on tech-ops-ai/tenant-rpa-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page