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.7.tar.gz (21.2 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.7-py3-none-any.whl (26.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: botuts-1.0.7.tar.gz
  • Upload date:
  • Size: 21.2 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.7.tar.gz
Algorithm Hash digest
SHA256 fe23ac425b497d35108bd1bb5fd7258def59b1191110aded63640ebcafc16ef5
MD5 0522fa62c1fa4d1eca5a0d22d6803d81
BLAKE2b-256 458dd85fb935ce72c91ea63aa03d2fad265ee3d0b2801ddd2057128446140d73

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: botuts-1.0.7-py3-none-any.whl
  • Upload date:
  • Size: 26.7 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.7-py3-none-any.whl
Algorithm Hash digest
SHA256 2d6507ab82961bd9cd7cbc6611109f493455b075e5fab7677360f4e49e94eac8
MD5 62b8143404a34718d8215bafced391a9
BLAKE2b-256 fb08900db3ba887bfefd5848b032b49d71920f6f65a3e3f6f907d67df664b5ca

See more details on using hashes here.

Provenance

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