Shigoto - Background job processing

Taure
Fri, 27 Mar 2026 07:06:03 +0000
Libraries

Shigoto is a PostgreSQL-backed background job processing library for Erlang, built on OTP.

Features:

Named queues with configurable concurrency

Retries with backoff

Cron scheduling

Job batches with completion callbacks

Circuit breakers for failure-heavy queues

Telemetry integration

Quick example:

%% Enqueue a job
shigoto:insert(#{
worker => my_email_worker,
args => #{<<“to”>> => <<“user@example.com”>>},
queue => <<“emails”>>
}).

%% Define a worker
-module(my_email_worker).
-behaviour(shigoto_worker).

-export([perform/1]).

perform(#{<<“to”>> := To}) →
send_email(To),
ok.

Demo app:

We put together shigoto_demo - a small Nova app that exercises the main features: multiple queues, cron jobs, batches, webhook retries with circuit breaking. It comes with a Python traffic simulator to generate load.

The demo also includes two live dashboards built with Arizona (real-time UI framework for Erlang):

shigoto_board (/shigoto) - real-time job dashboard with queue stats, job failures, batch progress, and cron entries

nova_liveboard (/liveboard) - BEAM VM dashboard with process explorer, ETS tables, supervision trees, and system metrics

Both dashboards are still in active development - expect rough edges and missing features. Feedback and ideas welcome.

Links:

shigoto:

github.com

GitHub - Taure/shigoto: PostgreSQL-backed background job processing for...

PostgreSQL-backed background job processing for the Nova ecosystem

shigoto_board

shigoto_demo

nova_liveboard

Nova framework

Arizona

3 posts - 2 participants