- Postgres-आधारित बड़े पैमाने के background job processing प्लेटफ़ॉर्म का open source संस्करण
- Distributed Task Queue और workflow orchestration प्लेटफ़ॉर्म
- जटिल job workflow, failure recovery, scheduling, event-based trigger, और real-time monitoring तक का समर्थन
- Python, Go, TypeScript SDK उपलब्ध
- MIT लाइसेंस, self-hosting और cloud version उपलब्ध
मुख्य फीचर्स का सारांश
-
queue management
- Postgres-आधारित durable queue system
- key-based queuing (fair job distribution लागू करने के लिए)
- rate limiting
- Sticky Assignment और Worker Affinity
- job distribution, retry, और failure notification का स्वतः प्रबंधन
- Python / TypeScript / Go उदाहरण उपलब्ध
-
job orchestration
- DAG-आधारित workflow configuration
- condition-based execution (उदा: sleep, event-based trigger, parent job के output value के आधार पर conditional execution आदि)
- जटिल branching logic को संभाल सकता है
- jobs के बीच dependency definition, कई jobs का parallel execution
- durable task के रूप में intermediate result storage और recovery का समर्थन
- durable function execution: failure होने पर intermediate state को cache करके rerun से restore करता है
- Durable Sleep और Durable Events का भी समर्थन
-
flow control
- user-level concurrency limits
- global और dynamic rate limiting
- रणनीतिक job distribution के ज़रिए system stability सुनिश्चित
-
job scheduling
- Cron jobs, scheduled execution, durable sleep का समर्थन
- उदाहरण: रोज़ आधी रात को execution, किसी विशेष समय पर schedule, तय समय तक wait आदि
-
job routing
- Sticky Assignment: job को उसी worker पर स्थिर रखना
- Worker Affinity: optimal worker selection logic लागू
-
event-based triggers
- external event प्राप्त होने के बाद job execute किया जा सकता है
- event/sleep conditions को combine किया जा सकता है
-
real-time web UI
- real-time dashboard और monitoring
- job logs देखना, notification settings (Slack/email)
Hatchet का उपयोग कब करना चाहिए?
- ✅ जब DAG-आधारित workflow configuration की ज़रूरत हो
- ✅ जब job failure पर retry और state preservation महत्वपूर्ण हो
- ✅ बहुत-से users वाले application में distributed job processing की ज़रूरत हो
- ❌ जब केवल तेज़ी से setup होने वाली simple queue चाहिए (Celery/BullMQ आदि सुझाए जाते हैं)
- ❌ जब विभिन्न data connectors के साथ integration महत्वपूर्ण हो (Airflow/Prefect आदि सुझाए जाते हैं)
तुलना: Hatchet vs अन्य solutions
-
Hatchet vs Temporal
- Hatchet में queue + DAG + Durable Execution तीनों का समर्थन है
- Temporal, Durable Execution के लिए अधिक optimize है
- Hatchet को self-host करना आसान है (सिर्फ Postgres चाहिए)
-
Hatchet vs BullMQ / Celery
- Hatchet में job history storage + UI visualization + built-in orchestration शामिल है
- BullMQ/Celery हल्के queue libraries हैं, लेकिन monitoring features सीमित हैं
-
Hatchet vs Airflow / Prefect
- Hatchet में high-speed execution, low latency, self-managed workers हैं
- Airflow/Prefect data pipeline-केंद्रित हैं और integration connectors में मजबूत हैं
सारांश
- Hatchet केवल Postgres पर चलने वाला आधुनिक distributed job processing प्लेटफ़ॉर्म है
- Durable, Observable, Composable job system को एक ही tool से लागू किया जा सकता है
- cloud/self-hosting दोनों का समर्थन करता है, और Python/Go/TypeScript के साथ आसानी से integrate किया जा सकता है
2 टिप्पणियां
2 घंटे टेस्ट करने के बाद लिखा है.
docker-compose.yamlको podman(+Arch) पर चलाया"SSL routines:OPENSSL_internal:WRONG_VERSION_NUMBER: Invalid certificate verification context"मिलने पर रुक गयाHacker News टिप्पणियाँ
जानना चाहता हूँ कि यह Procrastinate या Chancy जैसे दूसरे pg-आधारित Python job runners से कैसे अलग है
यह काफ़ी दिलचस्प है
FOR UPDATE SKIP LOCKED25k queries/sec तक scale नहीं करता, तो जानना चाहता हूँ कि यह किस बिंदु पर सीमा तक पहुँचाFOR UPDATE SKIP LOCKEDको ज़रूरत के हिसाब से scale करने वाले समाधान का हिस्सा थींजानना चाहता हूँ कि queue operations (jobs को queue में डालना और complete के रूप में mark करना) क्या मेरे business logic के साथ उसी transaction में होती हैं
मैं एक event/workflow-आधारित application डिज़ाइन कर रहा हूँ, और यह solution बहुत promising लग रहा है
Hatchet architecture में छह सुधारों की वजह से हर dimension में performance बेहतर हुई
README मानकर चलता है कि dark mode इस्तेमाल करने वाले users ज़्यादा हैं
Postgres को message queue की तरह इस्तेमाल करते समय मुझे बड़े payloads (50MB+) को संभालने की समस्या का सामना करना पड़ा
docs को 15 मिनट देखने के बाद मैं यह feedback दे रहा हूँ
v1 release के लिए बधाई
पहली छाप अच्छी है, release के लिए बधाई