- Plataforma open source de processamento de tarefas em background em grande escala baseada em Postgres
- Fila de tarefas distribuída (Distributed Task Queue) e plataforma de orquestração de workflows
- Suporta workflows de tarefas complexos, recuperação de falhas, agendamento, gatilhos baseados em eventos e monitoramento em tempo real
- SDKs para Python, Go e TypeScript
- Licença MIT, com versões self-hosted e em nuvem
Principais recursos em resumo
-
Gerenciamento de filas
- Sistema de filas durável baseado em Postgres
- Enfileiramento baseado em chave (implementa distribuição justa de tarefas)
- Limitação de taxa (Rate limiting)
- Sticky Assignment e Worker Affinity
- Distribuição de tarefas, tentativas de reexecução e alertas de falha tratados automaticamente
- Exemplos em Python / TypeScript / Go
-
Orquestração de tarefas
- Composição de workflows baseada em DAG
- Execução condicional (ex.: sleep, gatilhos baseados em eventos, execução condicional baseada na saída da tarefa pai etc.)
- Capaz de lidar com lógica de ramificação complexa
- Definição de dependências entre tarefas e execução paralela de múltiplas tarefas
- Suporte a armazenamento e recuperação de resultados intermediários com durable tasks
- Execução de funções durável: em caso de falha, armazena o estado intermediário em cache e restaura na reexecução
- Suporte também a Durable Sleep e Durable Events
-
Controle de fluxo (Flow Control)
- Limite de concorrência por usuário
- Limitação de taxa (Rate Limiting) global e dinâmica
- Garantia de estabilidade do sistema por meio de distribuição estratégica de tarefas
-
Agendamento de tarefas
- Suporte a tarefas Cron, execução agendada e durable sleep
- Ex.: executar todos os dias à meia-noite, agendar para um horário específico, aguardar até o horário definido etc.
-
Roteamento de tarefas
- Sticky Assignment: fixa a tarefa no mesmo worker
- Worker Affinity: aplica lógica de seleção do worker ideal
-
Gatilhos baseados em eventos
- Permite executar tarefas após receber eventos externos
- Possibilidade de combinar condições de evento/sleep
-
Web UI em tempo real
- Dashboard e monitoramento em tempo real
- Visualização de logs das tarefas e configuração de alertas (Slack/e-mail)
Quando vale a pena usar o Hatchet?
- ✅ Quando você precisa de composição de workflows baseada em DAG
- ✅ Quando reexecução e preservação de estado são importantes em caso de falha das tarefas
- ✅ Processamento distribuído de tarefas em aplicações com muitos usuários
- ❌ Quando você só precisa de uma fila simples e rápida de configurar (recomendados: Celery/BullMQ etc.)
- ❌ Quando a integração com vários conectores de dados é importante (recomendados: Airflow/Prefect etc.)
Comparação: Hatchet vs outras soluções
-
Hatchet vs Temporal
- Hatchet oferece suporte a fila + DAG + Durable Execution
- Temporal é otimizado para Durable Execution
- O Hatchet é fácil de self-hostar (só precisa de Postgres)
-
Hatchet vs BullMQ / Celery
- O Hatchet inclui armazenamento do histórico de tarefas + visualização em UI + orquestração embutida
- BullMQ/Celery são bibliotecas de fila leves, mas têm recursos limitados de monitoramento
-
Hatchet vs Airflow / Prefect
- O Hatchet oferece execução rápida, baixa latência e gerenciamento próprio de workers
- Airflow/Prefect são mais focados em pipelines de dados e se destacam em conectores de integração
Resumo
- Hatchet é uma plataforma moderna de processamento distribuído de tarefas que funciona apenas com Postgres
- É possível implementar um sistema de tarefas Durable, Observable e Composable com uma única ferramenta
- Suporta tanto nuvem quanto self-hosting e pode ser integrado facilmente com Python/Go/TypeScript
2 comentários
Testei por 2 horas e escrevi isto.
docker-compose.yamlno podman (+Arch)SSL routines:OPENSSL_internal:WRONG_VERSION_NUMBER: Invalid certificate verification contextdropno banco de dados do Postgres e começar de novoComentários no Hacker News
Gostaria de entender no que isso difere de outros executores de tarefas em Python baseados em pg, como Procrastinate ou Chancy
Muito interessante
FOR UPDATE SKIP LOCKEDnão escalava até 25k consultas/segundo, fiquei curioso sobre em que ponto ele começou a atingir o limiteFOR UPDATE SKIP LOCKEDde acordo com as necessidadesGostaria de saber se as operações da fila (colocar tarefas na fila e marcá-las como concluídas) acontecem na mesma transação da minha lógica de negócio
Estou projetando uma aplicação baseada em eventos/workflows, e essa solução parece muito promissora
As seis melhorias na arquitetura do Hatchet aumentaram o desempenho em todas as dimensões
O README parece assumir que há mais usuários usando modo escuro
Ao usar o Postgres como fila de mensagens, enfrentei problemas para lidar com payloads grandes (mais de 50MB)
VACUUM FULLperiódicoDepois de revisar a documentação por 15 minutos, deixo este feedback
Parabéns pelo lançamento da v1
A primeira impressão é boa, parabéns pelo lançamento