{"id":13747508,"url":"https://github.com/deanpcmad/sidekiq-limit_fetch","last_synced_at":"2026-04-08T13:31:08.119Z","repository":{"id":6323441,"uuid":"7558516","full_name":"deanpcmad/sidekiq-limit_fetch","owner":"deanpcmad","description":"A Sidekiq plugin to support advanced queue control (limiting, pausing, blocking, querying)","archived":false,"fork":false,"pushed_at":"2025-06-13T09:28:54.000Z","size":232,"stargazers_count":962,"open_issues_count":5,"forks_count":140,"subscribers_count":17,"default_branch":"master","last_synced_at":"2026-03-30T22:03:45.398Z","etag":null,"topics":["hacktoberfest","ruby","rubygem","sidekiq"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/deanpcmad.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"buy_me_a_coffee":"deanpcmad"}},"created_at":"2013-01-11T10:59:26.000Z","updated_at":"2026-03-30T03:49:03.000Z","dependencies_parsed_at":"2024-03-18T20:22:02.353Z","dependency_job_id":"50da226a-f8f8-4db7-b3e8-118f4254b1c5","html_url":"https://github.com/deanpcmad/sidekiq-limit_fetch","commit_stats":{"total_commits":241,"total_committers":37,"mean_commits":6.513513513513513,"dds":"0.34439834024896265","last_synced_commit":"f01f15edd323a9de06c48dfc447fb4f7ae863851"},"previous_names":["deanocodes/sidekiq-limit_fetch"],"tags_count":50,"template":false,"template_full_name":null,"purl":"pkg:github/deanpcmad/sidekiq-limit_fetch","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deanpcmad%2Fsidekiq-limit_fetch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deanpcmad%2Fsidekiq-limit_fetch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deanpcmad%2Fsidekiq-limit_fetch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deanpcmad%2Fsidekiq-limit_fetch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/deanpcmad","download_url":"https://codeload.github.com/deanpcmad/sidekiq-limit_fetch/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deanpcmad%2Fsidekiq-limit_fetch/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31533872,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"ssl_error","status_checked_at":"2026-04-07T16:28:06.951Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hacktoberfest","ruby","rubygem","sidekiq"],"created_at":"2024-08-03T06:01:31.702Z","updated_at":"2026-04-08T13:31:08.074Z","avatar_url":"https://github.com/deanpcmad.png","language":"Ruby","funding_links":["https://buymeacoffee.com/deanpcmad"],"categories":["Ruby"],"sub_categories":[],"readme":"## Description\n\n*This project has been taken over by [@deanpcmad](https://github.com/deanpcmad). Original code by [@brainopia](https://github.com/brainopia).*\n\nSidekiq strategy to support a granular queue control – limiting, pausing, blocking, querying.\n\n[![CI](https://github.com/deanpcmad/sidekiq-limit_fetch/actions/workflows/ci.yml/badge.svg)](https://github.com/deanpcmad/sidekiq-limit_fetch/actions/workflows/ci.yml)\n[![Gem Version](https://badge.fury.io/rb/sidekiq-limit_fetch.svg)](http://badge.fury.io/rb/sidekiq-limit_fetch)\n\n\u003e [!NOTE]\n\u003e This project/repo is currently unmaintained. I no longer use Sidekiq and therefore no longer need this feature.\n\n### Installation\n\nAdd this line to your application's Gemfile:\n\n```\ngem 'sidekiq-limit_fetch'\n```\n\nThen `bundle install`.\n\n### Limitations\n\n\u003e [!WARNING]\n\u003e At this moment, `sidekiq-limit_fetch` is incompatible with\n\u003e sidekiq pro's [super_fetch](https://github.com/sidekiq/sidekiq/wiki/Reliability#using-super_fetch),\n\u003e [sidekiq-rate-limiter](https://github.com/enova/sidekiq-rate-limiter),\n\u003e and any other plugin that rewrites fetch strategy of sidekiq.\n\n### Usage\n\nIf you are using this with Rails, you don't need to require it as it's done automatically.\n\nTo use this Gem in other Ruby projects, just add `require 'sidekiq-limit_fetch'`.\n\n### Limits\n\nSpecify limits which you want to place on queues inside sidekiq.yml:\n\n```yaml\n:limits:\n  queue_name1: 5\n  queue_name2: 10\n```\n\nOr set it dynamically in your code:\n```ruby\nSidekiq::Queue['queue_name1'].limit = 5\nSidekiq::Queue['queue_name2'].limit = 10\n```\n\nIn these examples, tasks for the `queue_name1` will be run by at most 5\nworkers at the same time and the `queue_name2` will have no more than 10\nworkers simultaneously.\n\nAbility to set limits dynamically allows you to resize worker\ndistribution among queues any time you want.\n\n### Limits per process\n\nIf you use multiple sidekiq processes then you can specify limits per process:\n\n```yaml\n:process_limits:\n  queue_name: 2\n```\n\nOr set it in your code:\n\n```ruby\nSidekiq::Queue['queue_name'].process_limit = 2\n```\n\n### Busy workers by queue\n\nYou can see how many workers currently handling a queue:\n\n```ruby\nSidekiq::Queue['name'].busy # number of busy workers\n```\n\n### Pauses\n\nYou can also pause your queues temporarily. Upon continuing their limits\nwill be preserved.\n\n```ruby\nSidekiq::Queue['name'].pause # prevents workers from running tasks from this queue\nSidekiq::Queue['name'].paused? # =\u003e true\nSidekiq::Queue['name'].unpause # allows workers to use the queue\nSidekiq::Queue['name'].pause_for_ms(1000) # will pause for a second\n```\n\n### Blocking queue mode\n\nIf you use strict queue ordering (it will be used if you don't specify queue weights)\nthen you can set blocking status for queues. It means if a blocking\nqueue task is executing then no new task from lesser priority queues will\nbe ran. Eg,\n\n```yaml\n:queues:\n  - a\n  - b\n  - c\n:blocking:\n  - b\n```\n\nIn this case when a task for `b` queue is ran no new task from `c` queue\nwill be started.\n\nYou can also enable and disable blocking mode for queues on the fly:\n\n```ruby\nSidekiq::Queue['name'].block\nSidekiq::Queue['name'].blocking? # =\u003e true\nSidekiq::Queue['name'].unblock\n```\n\n### Advanced blocking queues\n\nYou can also block on array of queues. It means when any of them is\nrunning only queues higher and queues from their blocking group can\nrun. It will be easier to understand with an example:\n\n```yaml\n:queues:\n  - a\n  - b\n  - c\n  - d\n:blocking:\n  - [b, c]\n```\n\nIn this case tasks from `d` will be blocked when a task from queue `b` or `c` is executed.\n\nYou can dynamically set exceptions for queue blocking:\n\n```ruby\nSidekiq::Queue['queue1'].block_except 'queue2'\n```\n\n### Dynamic queues\n\nYou can support dynamic queues (that are not listed in sidekiq.yml but\nthat have tasks pushed to them (usually with `Sidekiq::Client.push`)).\n\nTo use this mode you need to specify a following line in sidekiq.yml:\n\n```yaml\n:dynamic: true\n```\n\nor\n\n```yaml\n  :dynamic:\n    :exclude:\n      - excluded_queue\n```\n\nto exclude `excluded_queue` from dynamic queue\n\nDynamic queues will be ran at the lowest priority.\n\n### Maintenance\n\nIf you use `flushdb`, restart the sidekiq process to re-populate the dynamic configuration.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeanpcmad%2Fsidekiq-limit_fetch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdeanpcmad%2Fsidekiq-limit_fetch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeanpcmad%2Fsidekiq-limit_fetch/lists"}