Ruby On Rails 異步任務處理
使用redis-rb 數據庫gem 請先在本機安裝無法透過Gemfile安裝
gem install redis
接下來請開啟redis所需的server跑起來看看是否有安裝成功
redis-server /usr/local/etc/redis.conf
應該會長這樣
接下來安裝sidekiq sidekiq 搭配 redis效果非常突出 請在Gemfile安裝
gem 'sidekiq'
新增以下指令編輯 config/environments/development.rb
和 config/environments/production.rb
告訴 Rails 要用 sidekiq 来做異步處理
config.active_job.queue_adapter = :sidekiq
新增 config\sidekiq.yml
(請使用空格)
:queues:
default
mailers
新增異步處理任務rails g job import_worker
編輯app/jobs/import_worker_job.rb
def perform(import_id)
#do somethings
end
Controller加入以下代碼就可以呼叫了
ImportWorkerJob.perform_later(@import.id)
在專案底下執行下面指令就可以看到是誰在幫你做執行了
bundle exec sidekiq
在Sidekiq有專用的dashboard可以查看瀏覽狀態紀錄 如果有設定權限請記得給予
require 'sidekiq/web'
authenticate :user, lambda { |u| u.is_admin? } do
mount Sidekiq::Web => '/sidekiq'
end
瀏覽網址http://localhost:3000/sidekiq