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