Skip to main content

unique_jobs_idempotency

🔒 Idempotency & Deduplication with sidekiq‑unique‑jobs​

Prevent duplicate executions by leveraging the sidekiq-unique-jobs gem. Configure locks to ensure only one job per unique key is enqueued or executing at any time, and auto‑expire stale locks to avoid deadlocks in rare failure modes.

class SyncUserJob
include Sidekiq::Worker
sidekiq_options(
unique: :while_executing,
lock_expiration: 4.hours,
queue: :sync
)

def perform(user_id)
user = User.find(user_id)
ExternalApi.sync(user)
end
end

Lock types:

  • :until_executing — lock until job begins
  • :while_executing — lock during execution
  • :until_executed — lock until execution finishes