- Plataforma open source de procesamiento de tareas en segundo plano a gran escala basada en Postgres
- Cola de tareas distribuida (Distributed Task Queue) y plataforma de orquestación de flujos de trabajo
- Soporta flujos de trabajo complejos, recuperación ante fallos, programación, disparadores basados en eventos y monitoreo en tiempo real
- Incluye SDK para Python, Go y TypeScript
- Licencia MIT, con versiones self-hosted y en la nube
Resumen de funciones principales
-
Gestión de colas
- Sistema de colas duradero basado en Postgres
- Encolado basado en claves (implementa una distribución justa de tareas)
- Rate limiting
- Sticky Assignment y Worker Affinity
- Manejo automático de distribución de tareas, reintentos y alertas por fallos
- Incluye ejemplos en Python / TypeScript / Go
-
Orquestación de tareas
- Construcción de flujos de trabajo basada en DAG
- Ejecución basada en condiciones (por ejemplo: sleep, disparadores basados en eventos, ejecución condicional según la salida de la tarea padre, etc.)
- Permite manejar lógica de ramificación compleja
- Definición de dependencias entre tareas y ejecución paralela de múltiples tareas
- Soporte para guardar y recuperar resultados intermedios con durable tasks
- Ejecución durable de funciones: ante fallos, guarda en caché el estado intermedio y lo restaura al reejecutar
- También soporta Durable Sleep y Durable Events
-
Control de flujo (Flow Control)
- Límite de concurrencia por usuario
- Rate limiting global y dinámico
- Estabilidad del sistema mediante distribución estratégica de tareas
-
Programación de tareas
- Soporta tareas Cron, ejecución programada y durable sleep
- Ejemplo: ejecutar todos los días a medianoche, programar a una hora específica o esperar hasta una hora determinada
-
Enrutamiento de tareas
- Sticky Assignment: fija una tarea al mismo worker
- Worker Affinity: aplica lógica de selección del worker óptimo
-
Disparadores basados en eventos
- Permite ejecutar tareas después de recibir eventos externos
- Se pueden combinar condiciones de evento/sleep
-
Web UI en tiempo real
- Dashboard y monitoreo en tiempo real
- Visualización de logs de tareas y configuración de alertas (Slack/correo electrónico)
¿Cuándo conviene usar Hatchet?
- ✅ Cuando necesitas construir flujos de trabajo basados en DAG
- ✅ Cuando son importantes los reintentos y la preservación del estado ante fallos de tareas
- ✅ Para distribuir y procesar tareas en aplicaciones con muchos usuarios
- ❌ Cuando solo necesitas una cola simple y fácil de configurar rápidamente (se recomiendan Celery/BullMQ, etc.)
- ❌ Cuando la integración con diversos conectores de datos es importante (se recomiendan Airflow/Prefect, etc.)
Comparación: Hatchet vs otras soluciones
-
Hatchet vs Temporal
- Hatchet soporta cola + DAG + Durable Execution
- Temporal está optimizado para Durable Execution
- Hatchet es fácil de self-hostear (solo requiere Postgres)
-
Hatchet vs BullMQ / Celery
- Hatchet incluye almacenamiento del historial de tareas + visualización en UI + orquestación integrada
- BullMQ/Celery son bibliotecas de colas ligeras, pero con funciones de monitoreo limitadas
-
Hatchet vs Airflow / Prefect
- Hatchet ofrece ejecución rápida, baja latencia y gestión propia de workers
- Airflow/Prefect están más centrados en pipelines de datos y destacan por sus conectores de integración
Resumen
- Hatchet es una plataforma moderna de procesamiento distribuido de tareas que funciona solo con Postgres
- Permite implementar con una sola herramienta un sistema de tareas Durable, Observable y Composable
- Soporta tanto nube como self-hosting y se integra fácilmente con Python/Go/TypeScript
2 comentarios
Lo probé durante 2 horas y escribí esto.
docker-compose.yamlen Podman (+Arch).SSL routines:OPENSSL_internal:WRONG_VERSION_NUMBER: Invalid certificate verification contexty lo dejé ahí.dropde la base de datos de Postgres y empezar de nuevo.Opiniones en Hacker News
Me pregunto en qué se diferencia de otros ejecutores de tareas en Python basados en pg, como Procrastinate o Chancy
Esto es muy interesante
FOR UPDATE SKIP LOCKEDno escala hasta 25k consultas/segundo, me pregunto en qué punto llegaron al límiteFOR UPDATE SKIP LOCKEDsegún sus necesidadesMe pregunto si el trabajo de la cola (poner trabajos en cola y marcarlos como completados) ocurre dentro de la misma transacción que mi lógica de negocio
Estoy diseñando una aplicación basada en eventos/workflows, y esta solución parece muy prometedora
Las seis mejoras en la arquitectura de Hatchet elevan el rendimiento en todos los frentes
El README asume que hay más usuarios usando modo oscuro
Al usar Postgres como cola de mensajes, me he topado con problemas para manejar payloads grandes (más de 50MB)
Después de revisar la documentación durante 15 minutos, dejo este feedback
Felicidades por el lanzamiento de v1
La primera impresión es buena, felicidades por el lanzamiento