job-iteration
Makes your background jobs interruptible and resumable by design. (by Shopify)
sidekiq-unique-jobs
Prevents duplicate Sidekiq jobs (by mhenrixon)
job-iteration | sidekiq-unique-jobs | |
---|---|---|
5 | 4 | |
1,025 | 1,419 | |
0.9% | - | |
8.6 | 7.9 | |
6 days ago | about 1 month ago | |
Ruby | Ruby | |
MIT License | MIT License |
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
job-iteration
Posts with mentions or reviews of job-iteration.
We have used some of these posts to build our list of alternatives
and similar projects. The last one was on 2022-12-30.
-
Gnarly Learnings from December 2022
Shopify/Job-Iteration
-
Announcing sidekiq-iteration - a gem that makes your sidekiq jobs interruptible and resumable by design
I am publishing a new gem - https://github.com/fatkodima/sidekiq-iteration. For those familiar with job-iteration (https://github.com/Shopify/job-iteration) from Shopify, this is an adoption of that gem to be used with raw Sidekiq (no ActiveJob).
-
Making background jobs more resilient by default
Now that we are batching data together, we want to limit how long a single job can run. In order to tackle this, we leveraged functionality from the job-iteration gem. This gem provides an interface where we can define an enumerator and what to do each iteration. The gem will handle the rest. Utilizing this, our job and module will now look like this: (For ease of reading, the bit of code already shown has been removed.)
-
Why does this function use a lot of memory?
For advanced use cases, check out https://github.com/Shopify/job-iteration which keeps track of progress and can resume after deployment/VM eviction/etc
-
Getting Sidekiq to play nicely with auto-scaling
If that's the case, https://github.com/Shopify/job-iteration could help by making all your jobs easily interruptible.
sidekiq-unique-jobs
Posts with mentions or reviews of sidekiq-unique-jobs.
We have used some of these posts to build our list of alternatives
and similar projects. The last one was on 2022-05-24.
-
How to Avoid Race Conditions in Rails
If you use Sidekiq workers to make changes to your database, you can use SidekiqUniqueJobs to add unique constraints to Sidekiq queues. Uniqueness is achieved by acquiring locks for a hash of a queue name, a worker class, and a job's arguments. By default, only one lock for a given hash can be acquired. If an attempt to acquire a new lock is made, an exception SidekiqUniqueJobs::ScriptError is raised.
- Sidekiq - enqueue a job after a series of other jobs are finished
-
Delayed Job vs. Sidekiq: Which Is Better?
https://github.com/mhenrixon/sidekiq-unique-jobs
All of which also extend the web UI for Sidekiq which is incredibly useful for both debugging and having a handle on what's with your queues.
Finally, if you're going to be using Sidekiq in any serious way I'd recommend Nate Berkopec's "Sidekiq in Practice" - https://nateberk.gumroad.com/l/sidekiqinpractice
Beyond being an incredibly useful resource on its own - you get access to a very active private Slack that is filled with other very helpful developers who are using Sidekiq.
-
Getting Sidekiq to play nicely with auto-scaling
That's an interesting suggestion. We're relying on ActiveJob and sidekiq-unique-jobs doesn't explicitly support it, unfortunately. We'll have to test it out, though, and see if it just happens to work.
What are some alternatives?
When comparing job-iteration and sidekiq-unique-jobs you can also consider the following projects:
Sidekiq - Simple, efficient background processing for Ruby
sidekiq-throttled - Concurrency and rate-limit throttling for Sidekiq