- Open-Source-Plattform für die Verarbeitung umfangreicher Hintergrundjobs auf Basis von Postgres
- Verteilte Job-Queue (Distributed Task Queue) und Workflow-Orchestrierungsplattform
- Unterstützt komplexe Job-Workflows, Fehlerbehebung, Scheduling, ereignisbasierte Trigger und Echtzeit-Monitoring
- SDKs für Python, Go und TypeScript verfügbar
- MIT-Lizenz, als Self-Hosting- und Cloud-Version verfügbar
Zusammenfassung der wichtigsten Funktionen
-
Queue-Management
- Robustes Queue-System auf Postgres-Basis
- Schlüsselbasiertes Queueing (für faire Job-Verteilung)
- Rate Limiting
- Sticky Assignment und Worker Affinity
- Automatische Verarbeitung von Job-Verteilung, Wiederholungen und Fehlerbenachrichtigungen
- Beispiele für Python / TypeScript / Go verfügbar
-
Job-Orchestrierung
- Workflow-Aufbau auf DAG-Basis
- Bedingte Ausführung (z. B. sleep, ereignisbasierte Trigger, bedingte Ausführung basierend auf Ausgabewerten übergeordneter Jobs usw.)
- Kann komplexe Verzweigungslogik verarbeiten
- Definition von Abhängigkeiten zwischen Jobs, parallele Ausführung mehrerer Jobs
- Unterstützt das Speichern und Wiederherstellen von Zwischenergebnissen mit Durable Tasks
- Dauerhafte Funktionsausführung: Bei Fehlern wird der Zwischenzustand zwischengespeichert und durch erneute Ausführung wiederhergestellt
- Unterstützt auch Durable Sleep und Durable Events
-
Ablaufsteuerung (Flow Control)
- Nebenläufigkeitsbegrenzung pro Nutzer
- Globales und dynamisches Rate Limiting
- Sicherstellung der Systemstabilität durch strategische Job-Verteilung
-
Job-Scheduling
- Unterstützt Cron-Jobs, geplante Ausführung und durable sleep
- Beispiele: tägliche Ausführung um Mitternacht, Ausführung zu einem bestimmten Zeitpunkt, Warten bis zu einer festgelegten Zeit usw.
-
Job-Routing
- Sticky Assignment: Fixierung von Jobs auf denselben Worker
- Worker Affinity: Anwendung einer Logik zur Auswahl des optimalen Workers
-
Ereignisbasierte Trigger
- Jobs können nach Empfang externer Ereignisse ausgeführt werden
- Event-/Sleep-Bedingungen können kombiniert werden
-
Web-UI in Echtzeit
- Echtzeit-Dashboard und Monitoring
- Anzeige von Job-Logs, Konfiguration von Benachrichtigungen (Slack/E-Mail)
Wann ist Hatchet eine gute Wahl?
- ✅ Wenn ein DAG-basierter Workflow-Aufbau erforderlich ist
- ✅ Wenn Wiederholungen bei Job-Fehlern und Zustandsbewahrung wichtig sind
- ✅ Für die verteilte Verarbeitung von Jobs in Anwendungen mit vielen Nutzern
- ❌ Wenn nur eine einfache Queue mit schneller Einrichtung benötigt wird (Celery/BullMQ etc. empfohlen)
- ❌ Wenn die Integration mit verschiedenen Daten-Connectors wichtig ist (Airflow/Prefect etc. empfohlen)
Vergleich: Hatchet vs. andere Lösungen
-
Hatchet vs. Temporal
- Hatchet unterstützt Queue + DAG + Durable Execution zugleich
- Temporal ist für Durable Execution optimiert
- Hatchet lässt sich einfach selbst hosten (nur Postgres erforderlich)
-
Hatchet vs. BullMQ / Celery
- Hatchet bietet Speicherung der Job-Historie + UI-Visualisierung + integrierte Orchestrierung
- BullMQ/Celery sind leichtgewichtige Queue-Bibliotheken, bieten aber wenig Monitoring-Funktionen
-
Hatchet vs. Airflow / Prefect
- Hatchet bietet hohe Ausführungsgeschwindigkeit, geringe Latenz, eigenes Worker-Management
- Airflow/Prefect sind stärker auf Datenpipelines fokussiert und bei integrierten Connectors im Vorteil
Zusammenfassung
- Hatchet ist eine moderne Plattform für verteilte Job-Verarbeitung, die nur mit Postgres arbeitet
- Ein langlebiges, beobachtbares und komponierbares Job-System lässt sich mit einem einzigen Tool umsetzen
- Unterstützt sowohl Cloud als auch Self-Hosting und lässt sich leicht mit Python/Go/TypeScript integrieren
2 Kommentare
Ich habe es zwei Stunden lang getestet und danach diesen Kommentar geschrieben.
docker-compose.yamlauf podman (+Arch) ausgeführt.SSL routines:OPENSSL_internal:WRONG_VERSION_NUMBER: Invalid certificate verification contextabgebrochen.Hacker-News-Kommentare
Ich frage mich, worin sich das im Vergleich zu anderen pg-basierten Python-Job-Runnern wie Procrastinate oder Chancy unterscheidet.
Sehr interessant.
FOR UPDATE SKIP LOCKEDnicht auf 25k Abfragen/Sekunde skaliert, frage ich mich, an welchem Punkt die Grenze erreicht wurde.FOR UPDATE SKIP LOCKEDpassend zum Bedarf zu skalieren.Ich frage mich, ob Queue-Arbeit (Jobs in die Queue legen und als abgeschlossen markieren) in derselben Transaktion wie meine Business-Logik passiert.
Ich entwerfe gerade eine event-/workflowbasierte Anwendung, und diese Lösung wirkt sehr vielversprechend.
Dank der sechs Verbesserungen an der Hatchet-Architektur wurde die Performance in jeder Hinsicht gesteigert.
Das README scheint davon auszugehen, dass mehr Nutzer den Dark Mode verwenden.
Bei der Nutzung von Postgres als Message Queue bin ich auf Probleme mit großen Payloads (50 MB oder mehr) gestoßen.
Ich gebe Feedback, nachdem ich die Dokumentation 15 Minuten lang durchgesehen habe.
Glückwunsch zum v1-Launch.
Der erste Eindruck ist gut, Glückwunsch zum Launch.