原文:http://www.cnblogs.com/rywx/archive/2012/05/26/2519615.html

Resque

resque是基于redis的后台任务组件,能把任何类或模块作为任务在后台执行,且自带前台管理功能,方便查看执行情况。

使用

1. 编写任务

class WorkerClass
@queue = "demo"
def self.perform(args)
sleep 3
puts "Doing something complex with #{args}"
end
end

2. 进入任务队列

require "resque"
Resque.enqueue(WorkerClass, args)

3. 运行任务

与rails3整合

0. 配置redis
新增 config/redis.yml 文件,加入以下内容

defaults: &defaults
host: localhost
port: 6379 development:
<<: *defaults test:
<<: *defaults staging:
<<: *defaults production:
<<: *defaults

1. 加载resque

echo "require 'resque'" > config/initializers/load_resque.rb
config = YAML::load(File.open("#{Rails.root}/config/redis.yml"))[Rails.env]
Resque.redis = Redis.new(:host => config['host'], :port => config['port'])

2. 由于worker类都放在app/jobs,因此需要指定rails加载此目录
修改 config/application.rb,加入以下内容

config.autoload_paths += %W(#{config.root}/app/jobs)

3. 加入rake任务
修改 @RakeFile@,加入以下内容

require ‘resque/tasks’
task “resque:setup” => :environment

第二句指明运行 resque:setup 前先初始化rails环境

运行resque后台任务

QUEUE=* rake resque:work

查看任务执行情况(用于调试)

#运行resque前台管理服务器
resque-web -p 8282
#打开浏览器,访问 http://0.0.0.0:8282
#前台可以查看失败的worker及其日志,可以手动执行retry操作

定时任务

如需定时执行任务,可以使用 resque-scheduler

测试

在测试的时候我们不需要测试过程与resque是异步的,否则resque执行的时候数据可能已经被清空了,使用resque_spec插件可以让resque worker立即执行

详情查看 https://github.com/leshill/resque_spec

最新文章

  1. PHP读取EXCEL时间
  2. javascript高级编程3第二章:在html中使用javascript
  3. Idea_Intellij Idea 12 生成serialVersionUID的方法
  4. 深入理解jQuery插件开发(转)
  5. Check the quota usage
  6. zoj 1539 Lot
  7. 【Nginx】如何应对HTTP组态
  8. jQuery(3)——DOM操作
  9. Python数据处理——numpy_1
  10. Fiddler中如何抓取app中https(443端口)数据
  11. 使用Scribefire在博客中插入语法高亮 II
  12. MySQL字符集设置—MySQL数据库乱码问题
  13. phpStorm安装方法
  14. 计蒜客:Entertainment Box
  15. Python日志模块logging用法
  16. vue环境搭建+vscode
  17. 关于时间戳截取的隐藏bug
  18. java iterator
  19. mysql主从复制配置问题
  20. DIV居中的几种方法

热门文章

  1. apache基于端口的虚拟主机配置
  2. 互联网高并发之Hystrix实现服务隔离和降级
  3. spark总结3
  4. 更新gcc_Install gcc 4.7.x/4.8.x on CentOS
  5. python爬虫-异常处理
  6. HDU 5877 Weak Pair (2016年大连网络赛 J dfs+反向思维)
  7. YII2笔记之一
  8. Java -- 数据库 多表操作,1对多,多对多,1对1。 基于dbutils框架
  9. eclipse下进行c开发,使用zeromq
  10. WPF中的事件及冒泡事件和隧道事件(预览事件)的区别