您的位置:首页 > 产品设计 > UI/UE

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

2012-05-21 10:58 155 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: