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íveisgitup <comment>— Atualiza o repositório Gitupreq <atualiza a venv com os novos requirements>— Atualiza os requirements da venvsetupy— Cria venv, atualiza pip e instala requirementsbot-tasks— Lista todas as tasks do botbot-run— Executa a primeira taskbot-run <task>— Executa uma task específicabot-run-all— Executa todas as tasksbot-loop— Inicia o loop do processo (verifica os schedulles) #Auto orquestraçaobot-stack— Cria stack no Portainerbot-deploy— Redeploy da stack no Portainerbot-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-taskspara 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
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()
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()
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file botuts-1.1.5.tar.gz.
File metadata
- Download URL: botuts-1.1.5.tar.gz
- Upload date:
- Size: 27.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3d1c7282fe358693ad427d75331e35557f71cd12e13df9fc74b6d7a53d70c616
|
|
| MD5 |
68c2f36c4882ad5b4f258d15fbca365a
|
|
| BLAKE2b-256 |
c9682b6eb78e3be3324edaa6e8dc91c7e75a6faa08226f90440a6fcd0c1ca7ce
|
Provenance
The following attestation bundles were made for botuts-1.1.5.tar.gz:
Publisher:
deploy.yml on ZdekPyPi/BotUts
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
botuts-1.1.5.tar.gz -
Subject digest:
3d1c7282fe358693ad427d75331e35557f71cd12e13df9fc74b6d7a53d70c616 - Sigstore transparency entry: 1147994276
- Sigstore integration time:
-
Permalink:
ZdekPyPi/BotUts@0cd9f1214617b3e0716a0b4f1c68dddacda96a97 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/ZdekPyPi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
deploy.yml@0cd9f1214617b3e0716a0b4f1c68dddacda96a97 -
Trigger Event:
push
-
Statement type:
File details
Details for the file botuts-1.1.5-py3-none-any.whl.
File metadata
- Download URL: botuts-1.1.5-py3-none-any.whl
- Upload date:
- Size: 32.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2ee84bcab2c645f53dd2948b5519dcd28ac67018522459ce01c937ec1869411f
|
|
| MD5 |
c9b23ecf0a66c0554c3f8cbf7edeb58d
|
|
| BLAKE2b-256 |
b260f46feb1fe89c7aecd552cdaf8584f28f49c547b30c96d92bfbbd9da6336e
|
Provenance
The following attestation bundles were made for botuts-1.1.5-py3-none-any.whl:
Publisher:
deploy.yml on ZdekPyPi/BotUts
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
botuts-1.1.5-py3-none-any.whl -
Subject digest:
2ee84bcab2c645f53dd2948b5519dcd28ac67018522459ce01c937ec1869411f - Sigstore transparency entry: 1147994298
- Sigstore integration time:
-
Permalink:
ZdekPyPi/BotUts@0cd9f1214617b3e0716a0b4f1c68dddacda96a97 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/ZdekPyPi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
deploy.yml@0cd9f1214617b3e0716a0b4f1c68dddacda96a97 -
Trigger Event:
push
-
Statement type: