Sidekiq offers "simple, efficient background processing for Ruby." It's what we use when we need to easily perform parallel work or asynchronous jobs behind the scenes. Learn everything from the basics up through features offered in the Pro and Enterprise versions.


Each lesson focuses on a single aspect of building the project, like modeling the data, building a GraphQL server in Elixir, or building a mobile client for it in Flutter.


Introduction to Sidekiq

A basic introduction and overview of the Sidekiq background processing system.


Installation and First Job

Installing Sidekiq and writing and executing your first job.


Serialization of Arguments

Considerations for data types used in arguments in your workers.


Error Handling

A discussion of Sidekiq's retry process, exception monitoring, and idempotence.


Signal Handling

Interacting with your Sidekiq worker processes via UNIX signals.



Deploying a Rails app to Heroku that uses Sidekiq for background processing.



Diving into Sidekiq's Ruby API.


Sidekiq Pro: Reliability and Pausing Queues

Exploring what can go wrong with Sidekiq when workers die unceremoniously and how Sidekiq Pro resolves the issue. Also, examining the ability to pause queues.


Sidekiq Pro: Batches and Callbacks

Creating batches of jobs that can be monitored as a group, and having callbacks run when the batch is complete.


Sidekiq Pro: Expiring Jobs and Filtering in the Web UI

Handling jobs that have a limited useful time window in the event of busy queues, and filtering retries in the Web UI.


Sidekiq Pro: Speedy API Extensions

Sidekiq Pro's speedy API extensions, deleting jobs by `jid` and class, finding jobs by jid, and batch status.


Sidekiq Enterprise: Periodic Jobs

Scheduling jobs to run periodically; in other words, "cron for Sidekiq workers".


Sidekiq Enterprise: Unique Jobs

Using Sidekiq Enterprise to save you from duplicate jobs.


Sidekiq Enterprise: Rate Limiting

Using Sidekiq's Rate Limiters to get around pesky API SLAs.


Sidekiq Enterprise: Encryption and Multi-Process

Encrypting secrets at rest, and managing multiple sidekiqs with a single binary


The code in the applications was produced by:

./josh adams

Josh Adams

I've been building web-based software for businesses for over 18 years. In the last four years I realized that functional programming was in fact amazing, and have been pretty eager since then to help people build software better.

Featured Lessons

Our content library is pretty great, here are a few lessons we think you might like.

What our Superusers are Saying!

Some other people were willing to publicly state that they like us!

Taylor Dolezal

Software Architect

Smooth Terminal has easily been one of the most helpful resources on my journey to better understand Elixir and the Phoenix web framework.

James Edward II


With any language there are so many details to learn. What functions are built-in? How should I structure my code? What tools are available for improving my workflow? It’s rare to find one source that can answer so many of these questions, but Smooth Terminal does this and more.

Rex Van Der Spuy

Game developer

Smooth Terminal is by far the best resource for learning Elm anywhere, and among the very best online learning platforms, period.