Rails 的 sidekiq 設置筆記
Sidekiq 是一個能夠並發處理 Ruby 任務的套件,大致上的運作方法是:將任務 push 至 redis 的 queue 中,sidekiq 的 workers 再到 queue 一個個 pop 任務出來運算。
安裝
1 | # Gemfile |
1 | bundle install |
設置
Sidekiq
見 https://github.com/mperham/sidekiq/wiki/Advanced-Options。
ActiveJob 使用的 redis queue 名稱預設為 default,ActionMailer 使用的 redis queue 名稱預設為 mailers。
concurrency 參數需要小於或等於 config/database.yml中的 pool 值。
1 | # config/sidekiq.yml |
ActiveJob 使用 Sidekiq
見 https://github.com/mperham/sidekiq/wiki/Active-Job,在 environments/development.rb 與 environments/production.rb 中填入:
1 | config.active_job.queue_adapter = :sidekiq |
設置 Sidekiq 管理介面
Sidekiq 提供了一個管理介面,見 https://github.com/mperham/sidekiq/wiki/Monitoring,要將此管理介面放入既有的 Rails 專案,只需要在 config/routes.rb中加入:
1 | # config/routes.rb |
為 sidekiq 管理介面做權限控管,只讓 admin 可以查看管理介面,使用 devise + cancancan做例子:
1 | # config/routes.rb |
authenticate :user, ->(u) { condition } 這個式子中的 condition是 true 即可通過驗證。
執行
1 | sidekiq -C config/sidekiq.yml |
Rails 的 sidekiq 設置筆記



