Rails设置Sidekiq

Sidekiq是一个并发处理Ruby任务的套件,将任务推到redis的队列中,sidekiq中的工人再到队列pop一个任务出来接。

安装

# Gemfile
gem 'sidekiq'# console
$ bundle install

设定

Sidekiq

见「Advanced Options」,ActiveJob使用的redis队列名称为default,ActionMailer使用的redis队列名称为mailers

concurrency参数需要小于或等于config/database.yml中的pool值。

# config/sidekiq.yml
:concurrency: 16
:queues:
 — [‘default’, 1]
 — [“mailers”, 1]

ActiveJob使用Sidekiq

见「Active Job,在environments/development.rbenvironments/production.rb中填入:

# environments/development.rb
config.active_job.queue_adapter = :sidekiq
# environments/production.rb
config.active_job.queue_adapter = :sidekiq

设置Sidekiq管理介面

Sidekiq提供了一个管理介面,见「Authentication,要合并管理介面加入既有的Rails专案,只需要在config/routes.rb中加入:

# config/routes.rb
require 'sidekiq/web'
mount Sidekiq::Web => '/sidekiq'

为sidekiq管理介面做权限控制管,只让admin可以查看管理介面,使用devisecancancan做例子:

# config/routes.rb
require 'sidekiq/web'
authenticate :user, ->(u) { Ability.new(u).can? :manage, :admin } do
 mount Sidekiq::Web => 'admin/sidekiq'
end

authenticate :user, ->(u) { condition }这个式子中的conditiontrue即可通过验证。

执行

$ sidekiq -C config/sidekiq.yml

转载需保留链接来源:软件玩家 » Rails设置Sidekiq

赞 (0)