Um guia prático para configurar olélé moliba makasi no seu fluxo de trabalho
A primeira coisa que todo mundo faz errado com olélé moliba makasi é pular a validação inicial dos parâmetros. Eu aprendi isso na marra depois de passar uma tarde inteira debugando um problema que, no fim das contas, era um parâmetro de entrada com valor nulo passado silenciosamente pela camada de orquestração. A correção foi simples — adicionar um cheque no início do script que aborta com erro claro se qualquer variável crítica estiver em branco. A partir daí, o tempo médio de setup caiu de uns 45 minutos para cerca de 8. olélé moliba makasi é basicamente um mecanismo de encadeamento de tarefas que permite definir dependências entre processos sem depender de ferramentas externas como Make ou Celery. Ele roda localmente, lê um arquivo de configuração em formato JSON e executa as etapas na ordem determinada pelo grafo de dependências. Achei interessante quando comecei a usar porque eliminatei uma dependência inteira do meu stack — não precisava mais manter um scheduler separado rodando em background só para coordenar scripts Python.
Instalação e primeiros passos com olélé moliba makasi
Você pode baixar a versão mais recente diretamente do repositório oficial. O link de download está em github.com/moliko/olele-makasi/releases. Baixe o arquivo .zip correspondente ao seu sistema operacional, extraia em qualquer diretório e adicione a pasta ao PATH. Se estiver no Windows, rode o instalador MSI que vem no pacote — ele registra o executável e cria o handler de extensão .makasi automaticamente. Após a instalação, crie um arquivo chamado config.makasi na raiz do seu projeto. A estrutura mínima necessária é esta:
olélé moliba makasi — estrutura do arquivo de configuração
O conteúdo deve ser um objeto JSON com duas chaves principais: tasks, que é um array de definições de tarefa, e globals, que define variáveis compartilhadas. Cada task tem id, command, env (opcional), depends (array de ids), e timeout em segundos. O timeout padrão é 300, mas eu recomendo ajustar para cada tarefa individualmente — deixar genérico causa timeouts desnecessários em tasks que terminam em 3 segundos e falhas catastróficas naquelas que precisam de 10 minutos. Um exemplo real do meu projeto atual:
👉 Clique no botão abaixo para saber mais sobre o assunto!
{ "globals": { "workspace": "./data", "log_level": "info" }, "tasks": [ { "id": "fetch", "command": "python fetcher.py --source api", "env": { "API_KEY": "${SECRET_API_KEY}" }, "depends": [], "timeout": 120 }, { "id": "transform", "command": "python transform.py --input data/raw.json --output data/clean.csv", "depends": ["fetch"], "timeout": 60 }, { "id": "load", "command": "python loader.py --file data/clean.csv --target postgres", "depends": ["transform"], "timeout": 180 } ] } Para executar, basta chamar olele makasi run no terminal dentro do diretório do projeto. O motor resolve o grafo, verifica se não há ciclos, e dispara as tarefas na ordem correta. Se uma tarefa falhar, ele para imediatamente e logs vão para ~/.olele-makasi/logs/date_taskid.log.
Aqui vai algo que ninguém menciona nos tutoriais: olélé moliba makasi não trata variáveis de ambiente do sistema operacional por padrão. Se você precisa passar segredos, use a seção env de cada task e referencie variáveis do shell com a sintaxe ${VARIABLE}. Mas cuidado — se a variável não estiver definida no momento da execução, o motor não reclama na fase de parse. Ele apenas escreve a string "${VARIABLE}" literal no ambiente da subprocess e sua task falha de forma inexplicável. Minha solução foi criar um script wrapper que valida todas as variáveis referenciadas antes de chamar o runner principal. Outro ponto importante: o mecanismo de retry é inexistente. Se uma task falhar, você precisa relançar manualmente. Isso é intencional segundo o desenvolvedor — a filosofia é manter o tool simples. Eu concordo até certo ponto, mas para pipelines que rodam overnight isso é doloroso. Um workaround que funciona bem é envolver o comando de cada task crítica em um shell script com loop de retry próprio, usando exit code como gatilho. Não é elegante, mas resolve.
O consumo de memória é tipicamente baixo — cerca de 12MB durante a execução de um pipeline de três tarefas. O processo pai fica em torno de 28MB. Comparado a alternativas como Airflow ou Prefect, que pedem dezenas de megabytes só para subir o serviço, isso é vantagem clara para uso leve. Desvantagem: não há interface web, não há histórico visual de execuções passadas, e você depende inteiramente dos logs em texto puro. Para times que precisam de observabilidade, isso exige integração externa — eu uso um script que taila os logs e envia para um webhook do Slack. Se você está considerando adotar olélé moliba makasi, o cenário ideal é um fluxo de dados pequeno a médio, executado em serverless ou em um contêiner isolado, onde a complexidade de um orquestrador completo não se justifica. Se seu pipeline tem mais de dez tarefas com dependências ramificadas, ou se você precisa de dashboards e alertas nativos, considere Prefect ou mesmo um Makefile bem estruturado. Olélé moliba makasi brilha na simplicidade — e morre quando você tenta forçar ele a fazer o que não foi desenhado para fazer.