zoukankan      html  css  js  c++  java
  • Resque基本

    原文: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

  • 相关阅读:
    [ Virtuoso ] 增加自定义 Layer 需要做哪些事?
    [ ENV ] 记录一些自己比较喜欢的初始化语句
    [ SVRF ] 学习笔记
    [ Skill ] 键位不够用之 右键 Menu
    ubuntu创建桌面快捷方式
    git常用命令
    架设Git服务器
    Linux下安装redis
    mysql查询语句
    mysql数据库基本操作
  • 原文地址:https://www.cnblogs.com/zs-note/p/3853782.html
Copyright © 2011-2022 走看看