sidekiq-iteration
job-iteration
sidekiq-iteration | job-iteration | |
---|---|---|
2 | 5 | |
231 | 1,025 | |
- | 0.9% | |
6.4 | 8.6 | |
3 months ago | 5 days ago | |
Ruby | Ruby | |
MIT License | MIT License |
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.
sidekiq-iteration
-
Announcing sidekiq-iteration - a gem that makes your sidekiq jobs interruptible and resumable by design
Richard, thank you for the comment. You can also look at nested iterations enumerator - https://github.com/fatkodima/sidekiq-iteration#nested-iteration with a custom enumerator - https://github.com/fatkodima/sidekiq-iteration/blob/master/guides/custom-enumerator.md (if you are iterating over some non-activerecord resources for each repository).
job-iteration
-
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.
What are some alternatives?
Karafka - Ruby and Rails efficient multithreaded Kafka processing framework
Sidekiq - Simple, efficient background processing for Ruby
good_job - Multithreaded, Postgres-based, Active Job backend for Ruby on Rails.
sidekiq-unique-jobs - Prevents duplicate Sidekiq jobs
Redis - Redis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported: Strings, Lists, Sets, Sorted Sets, Hashes, Streams, HyperLogLogs, Bitmaps.
Delayed::Job - Database based asynchronous priority queue system -- Extracted from Shopify
crystal - The Crystal Programming Language
Sucker Punch - Sucker Punch is a Ruby asynchronous processing library using concurrent-ruby, heavily influenced by Sidekiq and girl_friday.
activejob-uniqueness - Unique jobs for ActiveJob. Ensure the uniqueness of jobs in the queue.
Resque - Resque is a Redis-backed Ruby library for creating background jobs, placing them on multiple queues, and processing them later.
acidic_job - Idempotent operations for Rails apps, built for ActiveJob or Sidekiq.