后台管理gem resque在rails3中的整合

PIDFILE=./resque.pid QUEUE=file_serve rake environment resque:work

railscasts视频
http://railscasts.com/episodes/271-resque?autoplay=true

github
https://github.com/defunkt/resque

gem安装
gem 'resque', :require => "resque/server"

新建resque.rake文件(lib/tasks)
require "resque/tasks"

task "resque:setup" => :environment

新建lib/file_convert_worker.rb
# -*- encoding: utf-8 -*-
# 文件转换后台运行程序,用于将mp4的文件转换成可以在手机上观看的rtsp, rtmp的视频文件
class FileConvertWorker
  @queue = :file_convert_que

  #视频的id号
  def self.perform(video_id)
    video = Video.find_by_id video_id
    if video
      #.... ....
    end
  end
  
end

@queue 变量是必须定义的
还需要定义一个 类方法  perform


在controller/action
Resque.enqueue(FileConvertWorker, video.id)




修改config/routes.rb文件
mount Resque::Server, :at => "/resque"

这样通过 /resque 可以访问后台的管理页面

增加/resque访问的认证控制
config/initializers/resque_auth.rb
Resque::Server.use(Rack::Auth::Basic) do |user, password|
  password == "secret"
end


resque的启动命令
rake resque:work QUEUE='*'
启动多个resque线程
COUNT=5 QUEUE=* rake resque:workers




controller中的引用
Resque.enqueue(FileConvertWorker, video.id)

resque debug 查看日志信息
 VVERBOSE=1 QUEUE=file_serve rake environment resque:work

生成pid文件的命令
PIDFILE=./resque.pid QUEUE=file_serve rake environment resque:work


运行在后台的任务
PIDFILE=./resque.pid BACKGROUND=yes QUEUE=file_serve \
    rake environment resque:work

默认情况, resque的执行频率是 5秒每次, 修改执行频率的代码是
INTERVAL=0.1 QUEUE=file_serve rake environment resque:work

resque不支持数字化的优先级

resque的解决方案是 提供不同优先级的 queue name, 如下命令

QUEUES=critical,archive,high,low rake resque:work

如果只有 archive 后台命令,那么 他会按照一定的次序. 如果发现 critical 那么会先执行 critical


你可能感兴趣的:(后台管理gem resque在rails3中的整合)