Skip to main content

Zdek Util libraries for Python coding

Project description

BotUts

BotUts é uma biblioteca para automação de tarefas, monitoramento, integração com Portainer, Selenoid, e gerenciamento de bots. Ela oferece uma interface CLI e diversas funcionalidades para facilitar a operação de robôs e stacks.


Instalação

Para instalar a biblioteca, basta executar:

pip install botUts

Configuração

Você pode definir as variáveis de ambiente manualmente ou criar um arquivo .env na raiz do projeto com o seguinte formato:

Obrigatórias:

BOT_NAME           = MeuBot
BOT_ID             = 123
MODE               = DEV   #DEFAULT DEV (`DEV` ou `PRD`)
LOG_DB             = Y     #DEFAULT N (Y|N)
DATABASE_URL       =       #SQLACHEMY URL DB sqlite:/// OR SIMILAR

O arquivo .env será carregado automaticamente

Defina as variáveis de ambiente necessárias para o funcionamento do bot e integrações:

Portainer: (Opcional fixo na maquina de DEV)

PORTAINER_HOST     = <http://localhost:9000>
PORTAINER_USER     = <USER>
PORTAINER_PASSWORD = <PASWORD>

Selenoid/Moon: (Opcional fixo na maquina de DEV)

MOON_HOST = <http://localhost:444/wd/hub>

Funcionalidades Principais

CLI (Interface de Linha de Comando)

Execute comandos utilitários para setup, atualização, execução de tasks e integração com Portainer:

  • bot-help — Mostra ajuda e comandos disponíveis
  • gitup <comment> — Atualiza o repositório Git
  • upreq <atualiza a venv com os novos requirements> — Atualiza os requirements da venv
  • setupy — Cria venv, atualiza pip e instala requirements
  • bot-tasks — Lista todas as tasks do bot
  • bot-run — Executa a primeira task
  • bot-run <task> — Executa uma task específica
  • bot-run-all — Executa todas as tasks
  • bot-loop — Inicia o loop do processo (verifica os schedulles) #Auto orquestraçao
  • bot-stack — Cria stack no Portainer
  • bot-deploy — Redeploy da stack no Portainer
  • bot-run-prd — Executa o bot em produção

Portainer

Validação de credenciais, criação e redeploy de stacks, integração com ambiente Portainer.

Selenoid/Moon

Listagem, remoção e gerenciamento de sessões de automação.

Tasks

Definição e execução de tarefas agendadas ou locais, com suporte a CRON.

Marcação e Monitoramento

Marcação de eventos/interações e monitoramento de APIs, com registro de logs e métricas.

Logs Organizados

O sistema de logs do BotUts é altamente organizado e flexível, permitindo:

  • Armazenamento de logs em arquivos diários, terminal e banco de dados.
  • Formatação avançada das mensagens, incluindo informações de função, arquivo, linha e extras.
  • Detecção automática de warnings e erros.
  • Integração com monitoramento de tarefas e eventos.

Vantagens:

  • Facilita auditoria e rastreamento de execuções.
  • Permite análise detalhada de falhas e performance.
  • Logs podem ser visualizados no terminal, arquivos ou banco, conforme necessidade.
  • Customização de níveis e formatos.

Exemplo de Uso

Variaveis do projeto

from bot_lib import botConfig

print(botConfig.BOT_NAME)
print(botConfig.BOT_ID)
print(botConfig.MODE)
print(botConfig.LOG_DB)  #HABILITA OU NAO OS LOGS BANCO DE DADOS EM PRODUCAO
print(botConfig.is_in_prd)
<BOT_NAME>
R001
DEV
False

Criando uma Task

from bot_lib import Task,logger

@Task.config(task_name="minha_task", local=True,comment="task de teste")  #local=True sao tasks que nao sao schedulladas e sao executadas sobre demanda
def main():
	logger.info("Executando task personalizada!")

@Task.config(task_name="minha_cron_task", cron="0 14 * * *")  #essa task ira executar automaticamente as 14:00 utilize o comando bot-loop
def main():
	logger.info("Executando task personalizada!")
  • utilize bot-tasks para caso deseje listar as tasks
  • para executar a primeira task definida bot-run
  • para executar uma task especifica bot-run minha-task
  • para executar as tasks em loop bot-loop

Exemplo de log organizado


Retry

Permite repetir uma função automaticamente em caso de falha.

from bot_lib import retry

@retry(attempts=3, delay=2)
def tarefa():
	print("Executando tarefa...")
	raise Exception("Falha!")

tarefa()  # Será executada até 3 vezes

Timeout

Permite limitar o tempo de execução de uma função:

from bot_lib import timeout
import time

@timeout(time=5)
def tarefa_lenta():
	time.sleep(10)
	print("Finalizou!")

tarefa_lenta()  # Será interrompida após 5 segundos

logger_class

O Logger class faz o traking automatico dos seus metodos informando nos logs caso algum erro ocorra.

from bot_lib import logger_class

@logger_class
class Rpa:
    def sub_funcao(self):
        raise Exception("Erro no processamento")

    def start(self):
        self.sub_funcao()


Rpa().start()

Exemplo

Marcação (marks)

Permite registrar eventos, interações e jobs para rastreamento e auditoria.

  • INTERACAO -> sao pequenos ganhos de tempo
  • JOB -> tarefas completas concluidas
from bot_lib import mark_inter, commit_mark_inter, mark_job

# Marca uma interação de 10 segundos (commita diretamente no banco caso em producao)
mark_inter(10,"Descricao da interacao")

# Marca 1 arquivo processado para contabilizar
mark_job("ARQUIVO","Arquivos Processados",qtd=1)

#EXEMPLO COM COMMIT ATRASADO
mark_inter(10,"Relatorio 1 OK",commit=False)
mark_inter(10,"Relatorio 2 OK",commit=False)

# Commita todas as marcações pendentes
commit_mark_inter()

Exemplo

Observações

  • Consulte o código dos módulos para detalhes avançados.
  • As funcionalidades são acessíveis via CLI ou importando os módulos Python.
  • Para integração com Portainer e Selenoid, configure as variáveis de ambiente corretamente.

Licença

Este projeto é distribuído sob a licença MIT.

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

botuts-1.0.4.tar.gz (21.3 kB view details)

Uploaded Source

Built Distribution

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

botuts-1.0.4-py3-none-any.whl (27.0 kB view details)

Uploaded Python 3

File details

Details for the file botuts-1.0.4.tar.gz.

File metadata

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

File hashes

Hashes for botuts-1.0.4.tar.gz
Algorithm Hash digest
SHA256 638131ff68b254a05cf3083218207a0ea1b26a50cc14d7e8c1f909360c26d40b
MD5 e4d87e491c170e90c2dd65459f59ee60
BLAKE2b-256 1f7c5e1c197e265ddfc26805a0f73ed8711dad70bcfd6592673a443782ad652a

See more details on using hashes here.

Provenance

The following attestation bundles were made for botuts-1.0.4.tar.gz:

Publisher: deploy.yml on ZdekPyPi/BotUts

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

File details

Details for the file botuts-1.0.4-py3-none-any.whl.

File metadata

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

File hashes

Hashes for botuts-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 c37103938f36ea491c3ca51641209c1d13acd122a31e9f375b0a59b4b0618123
MD5 d77f61a6000e50ea8677e20cea73739a
BLAKE2b-256 d9f942631483e7234b0769840ef45195f2667d15f158eac1b3f562956726b837

See more details on using hashes here.

Provenance

The following attestation bundles were made for botuts-1.0.4-py3-none-any.whl:

Publisher: deploy.yml on ZdekPyPi/BotUts

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