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 設置筆記