Ruby on rails学习:active_job

如何执行rails的后台任务,用到的工具是 active_job + rescue
更新于: 2022-01-02 09:51:24

加密的 redis 与 rails 连接

Resque.redis = 'redis://username:password@localhost:port'

如果是在 docker 里使用可以用内网ip或者公网ip来访问,参考

Resque.redis = 'redis://username:password@192.168.148.144:port'

第1步:添加 rescue 到 Gemfile 中,并 bundle install

gem 'resque'

第2步:设置默认的 active_job_queue

在这个文件里添加: config/application.rb

# active job queue
config.active_job.queue_adapter = :resque

第3步: Rakefile 中加入对应的 tasks

根目录下的 Rakefile 文件

require 'resque/tasks'
task 'resque:setup' => :environment

第4步:添加 redis 配置

这里实际上省略了一个步骤:

  1. 你先得安装好 redis
  2. 添加配置 config/initializers/redis.rb
# Resque.redis = 'redis://username:password@localhost:port'

# 以下是我的配置
Resque.redis = 'redis://default:123456@localhost:6379'

第5步:以 Rake 方式查看

QUEUE=* rake resque:work

第6步:添加自己的job

rails g job TrendStat
class TrendStatJob < ApplicationJob
  queue_as :default

  def perform
    Trend.stat
    Rails.logger.info("Trend stat update.")
  end
end

其实你还可以用web方式查看

require 'resque/server'
mount Resque::Server, at: '/jobs'

#or if you would like to protect this with Devise
devise_for :users

authenticate :user do
  mount Resque::Server, at: '/jobs'
end

参考