-
Notifications
You must be signed in to change notification settings - Fork 11
Job Format
Sidekiq serializes jobs to Redis in JSON format. Each Job is a simple Hash of data.
At bare minimum, a job requires five fields:
{
"class": "SomeWorker",
"jid": "b4a577edbccf1d805744efa9", // 12-byte random number as 24 char hex string
"args": [1, "arg", true],
"created_at": 1234567890,
"enqueued_at": 1234567890
}
args
is splatted into an instance of the worker class's perform
method. Note that enqueued_at
isn't added to the payload for scheduled jobs. They get the enqueued_at field when they are pushed onto a queue.
If writing server middleware and have integrated Sidekiq with ActiveJob the format provided for the second argument of
call
is as follows:
{
"class": "ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper",
"wrapped": "SomeWorker",
"queue": "default",
"args":[
{
"job_class": "SomeWorker",
"job_id": "b4a577edbccf1d805744efa9",
"provider_job_id": null,
"queue_name": "default",
"priority": null,
"arguments": ["some",["argument","value"]],
"executions": 0,
"locale": "en",
"attempt_number": 1
}
],
"retry": true,
"wait": "0.1",
"jid": "d774900367dc8b2962b2479c", // Note different JID
"created_at": 1234567890,
"locale": "en",
"enqueued_at": 1234567890,
"error_message": null,
"error_class": null,
"failed_at": null,
"retry_count": 0,
"retried_at": null
}
When a job is serialized, the options for the Worker are serialized as part of the job payload:
{
"queue": "default",
"retry": true
}
The at
element stores when a job is scheduled to execute, in Unix epoch format:
{
"at": 1234567890.123
}
Sidekiq's retry feature adds several elements to the job payload, necessary for documenting the error in the UI:
{
"retry_count": 2, // number of times we've retried so far
"error_message": "wrong number of arguments (2 for 3)", // the exception message
"error_class": "ArgumentError", // the exception class
"error_backtrace": ["line 0", "line 1", ...], // some or all of the exception's backtrace, optional, array of strings
"failed_at": 1234567890, // the first time the job failed
"retried_at": 1234567890 // the last time the job failed
}
The last two items are timestamps stored as epoch integers.
Home | The Basics | Best Practices | Using Redis | Error Handling | Advanced Options | Problems?
This wiki is tracked by git and publicly editable. You are welcome to fix errors and typos. Any defacing or vandalism of content will result in your changes being reverted and you being blocked.