Skip to content
Tech News
← Back to articles

Show HN: Lightweight Task queue on Erlang/OTP, SQLite-backed, no overengineering

read original get Erlang/OTP Task Queue Kit → more articles
Why This Matters

This article introduces Ezra, a lightweight, persistent task queue built on Erlang/OTP and SQLite, designed for simplicity and reliability without overengineering. It allows services to push tasks and workers to process them efficiently across various programming languages using Redis-compatible clients, ensuring explicit task tracking and acknowledgment. Ezra's minimal setup and straightforward integration make it a practical choice for developers seeking a dependable task management solution.

Key Takeaways

Exchange via Zero-loss Relay Agent

EZRA is a persistent task queue. Multiple services push tasks in, multiple workers pull them out and confirm when done. Each task stays visible and explicitly tracked until a worker marks it finished - no silent drops, no fire-and-forget. Backed by SQLite, powered by the Erlang/OTP runtime. Workers connect with any Redis client (Redis itself is not needed) in any language - no new SDK required.

This project is maintained by a single author and pull requests are not accepted. Issues for bugs or questions are welcome.

Contents

Quick start

docker run -d --name ezra \ -p 42002:42002 \ -v ezra_data:/data \ ghcr.io/entgriff/ezra

That is the entire server setup. Now, from any machine that can reach that port:

Producer - push a task

import redis r = redis . Redis ( host = "localhost" , port = 42002 , decode_responses = True , protocol = 3 ) # Push a task into the "emails" queue. # Queues do not need to be created in advance - the first push creates one. r . xadd ( "emails" , { "payload" : '{"to": "[email protected]"}' })

Worker - pop and process tasks

... continue reading