美文网首页
【rubygems】之 rufus-scheduler

【rubygems】之 rufus-scheduler

作者: bruce_wu | 来源:发表于2020-05-12 08:52 被阅读0次
    image.png

    一、rufus-scheduler是什么
    rufus-scheduler 是一个很简单的做定时任务的程序包,基本上可以解决我们日常中的定时任务。

    rufus-scheduler支持五种模式的任务定义, in、at、every、interval、cron。

    二、安装
    Bash
    gem install rufus-scheduler

    三、使用
    新建一个Ruby文件 demo.rb,写入如下代码:

    Ruby
    require 'rubygems'
    require 'rufus/scheduler'

    scheduler = Rufus::Scheduler.new

    scheduler.in '20m' do
    puts "order ristretto"
    end

    scheduler.at '2018-12-06 12:05' do
    puts 'order pizza'
    end

    scheduler.cron '0 22 * * 1-5' do

    every day of the week at 22:00 (10pm)

    puts 'activate security system'
    end

    scheduler.every '5m' do
    puts 'check blood pressure'
    end

    scheduler.interval '2h' do
    puts "thinking..."
    puts sleep(rand * 1000)
    puts "thought."
    end

    scheduler.join
    然后我们把它运行起来, ruby demo.rb

    四、和rails结合使用
    创建 config/initializers/scheduler.rb

    Ruby
    require 'rufus-scheduler'

    Let's use the rufus-scheduler singleton

    scheduler = Rufus::Scheduler.singleton

    return if defined?(Rails::Console) || Rails.env.test? || File.split($0).last == 'rake'
    scheduler.every '2s' do
    Rails.logger.info "hello, it's #{Time.now.strftime('%Y-%m-%d %H:%M:%S')}"
    Rails.logger.flush
    end

    五、注意事项

    1. 在 puma 的 deamon 模式下无法使用,具官方说明可以使用unicorn来跑
      或者使用runit等方法运行程序才可以

    2. 需使用代码禁止在console/test/rake下启动rufus-scheduler

    六、优缺点
    优点

    不依赖其他外部工具,只在进程中就可以实现

    时间可以精确到秒

    模式众多 in/at/cron

    缺点:

    主进程关闭后就失效了

    主进程关闭后会丢失之前所有已计划的任务

    某个任务意外报错有可能导致整个进程退出

    相关文章

      网友评论

          本文标题:【rubygems】之 rufus-scheduler

          本文链接:https://www.haomeiwen.com/subject/rryvnhtx.html