- Plateforme open source de traitement de tâches d’arrière-plan à grande échelle basée sur Postgres
- File de tâches distribuée (Distributed Task Queue) et plateforme d’orchestration de workflows
- Prend en charge les workflows de tâches complexes, la reprise après échec, la planification, les déclencheurs basés sur les événements et la supervision en temps réel
- SDK disponibles pour Python, Go et TypeScript
- Licence MIT, avec versions self-hosted et cloud
Résumé des principales fonctionnalités
-
Gestion des files
- Système de file durable basé sur Postgres
- Mise en file basée sur des clés (implémente une répartition équitable des tâches)
- Limitation de débit (Rate limiting)
- Sticky Assignment et Worker Affinity
- Gestion automatique de la distribution des tâches, des nouvelles tentatives et des alertes en cas d’échec
- Exemples fournis en Python / TypeScript / Go
-
Orchestration des tâches
- Composition de workflows basée sur des DAG
- Exécution conditionnelle (ex. : sleep, déclencheur basé sur un événement, exécution conditionnelle selon la valeur de sortie d’une tâche parente, etc.)
- Capable de gérer une logique de branchement complexe
- Définition des dépendances entre tâches, exécution parallèle de plusieurs tâches
- Prise en charge de la sauvegarde et de la restauration des résultats intermédiaires via des durable tasks
- Exécution de fonctions durables : en cas d’échec, l’état intermédiaire est mis en cache puis restauré lors de la réexécution
- Prend aussi en charge Durable Sleep et Durable Events
-
Contrôle de flux (Flow Control)
- Limitation de concurrence par utilisateur
- Limitation de débit (Rate Limiting) globale et dynamique
- Stabilité du système assurée grâce à une répartition stratégique des tâches
-
Planification des tâches
- Prise en charge des tâches Cron, de l’exécution planifiée et de durable sleep
- Ex. : exécution chaque jour à minuit, planification à une heure donnée, attente jusqu’à l’heure définie, etc.
-
Routage des tâches
- Sticky Assignment : tâche fixée au même worker
- Worker Affinity : application d’une logique de sélection du worker optimal
-
Déclencheurs basés sur les événements
- Exécution possible des tâches après réception d’un événement externe
- Possibilité de combiner des conditions d’événement et de sleep
-
Interface Web en temps réel
- Tableau de bord et supervision en temps réel
- Consultation des logs de tâches, configuration des alertes (Slack/e-mail)
Quand utiliser Hatchet ?
- ✅ Quand vous avez besoin de composer des workflows basés sur des DAG
- ✅ Quand les nouvelles tentatives et la conservation d’état sont importantes en cas d’échec
- ✅ Pour répartir les traitements dans des applications avec un grand nombre d’utilisateurs
- ❌ Si vous avez seulement besoin d’une file simple et rapide à mettre en place (Celery/BullMQ recommandés)
- ❌ Si l’intégration avec divers connecteurs de données est un critère important (Airflow/Prefect recommandés)
Comparaison : Hatchet vs autres solutions
-
Hatchet vs Temporal
- Hatchet prend en charge à la fois queue + DAG + Durable Execution
- Temporal est optimisé pour la Durable Execution
- Hatchet est simple à self-hoster (Postgres suffit)
-
Hatchet vs BullMQ / Celery
- Hatchet intègre historique des tâches + visualisation UI + orchestration embarquée
- BullMQ/Celery sont des bibliothèques de file légères, mais avec des fonctions de supervision limitées
-
Hatchet vs Airflow / Prefect
- Hatchet offre exécution rapide, faible latence et gestion native des workers
- Airflow/Prefect sont centrés sur les pipelines de données, avec un avantage sur les connecteurs d’intégration
Résumé
- Hatchet est une plateforme moderne de traitement distribué des tâches qui fonctionne uniquement avec Postgres
- Elle permet de mettre en place, avec un seul outil, un système de tâches durable, observable et composable
- Elle prend en charge à la fois le cloud et le self-hosting, et s’intègre facilement avec Python, Go et TypeScript
2 commentaires
Je l’ai testé pendant 2 heures avant d’écrire ceci.
docker-compose.yamlsur podman (+Arch)SSL routines:OPENSSL_internal:WRONG_VERSION_NUMBER: Invalid certificate verification contextAvis Hacker News
Je me demande en quoi cela diffère d’autres exécuteurs de tâches Python basés sur pg, comme Procrastinate ou Chancy
C’est très intéressant
FOR UPDATE SKIP LOCKEDne passe pas à l’échelle jusqu’à 25k requêtes/s, je me demande à quel moment la limite a été atteinteFOR UPDATE SKIP LOCKEDselon les besoinsJe me demande si les opérations de file d’attente (mettre une tâche en file puis la marquer comme terminée) se produisent dans la même transaction que ma logique métier
Je conçois une application basée sur des événements / workflows, et cette solution semble très prometteuse
Les six améliorations de l’architecture Hatchet ont permis d’améliorer les performances sur tous les plans
Le README part du principe que davantage d’utilisateurs utilisent le mode sombre
En utilisant Postgres comme file de messages, j’ai rencontré des problèmes pour traiter de grosses charges utiles (50 Mo et plus)
Après avoir parcouru la documentation pendant 15 minutes, voici mon retour
Félicitations pour la sortie de la v1
Bonne première impression, félicitations pour le lancement