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.new(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.new(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.1.7.tar.gz (28.6 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.1.7-py3-none-any.whl (34.0 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for botuts-1.1.7.tar.gz
Algorithm Hash digest
SHA256 7462a5c66b4b743a9e4fb297bebc87b513c56e9465ac32dd5ace8bd91eaeb0f0
MD5 2858393f25d96fe1503a13575a034d70
BLAKE2b-256 520e2447ab27d4cdd8ddfd1d3d50ccaebf5602ea9a26b3212fedeb6a73bab3f0

See more details on using hashes here.

Provenance

The following attestation bundles were made for botuts-1.1.7.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.1.7-py3-none-any.whl.

File metadata

  • Download URL: botuts-1.1.7-py3-none-any.whl
  • Upload date:
  • Size: 34.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.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 c418bf0ff7c35adc88ff51e37c0ada2addfe8ef7cb306ffe435a78cc0ea71481
MD5 a5bde309c417267bc37cebb3bb2444c9
BLAKE2b-256 00a97372900ebb962406f29fe940c768b2f7adc985bdbc3f11e671277397435a

See more details on using hashes here.

Provenance

The following attestation bundles were made for botuts-1.1.7-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