Ruby 定时任务之一(初步尝试)
最近工作需要用到定时任务。原来写java的时候也用到过类似的Scheduler的功能。
Ruby语言中也有同样功能的工具。rufus-scheduler。下面介绍一下rufus-scheduler。
定义: a Ruby gem for scheduling pieces of code (jobs). It understands running a job AT a certain time, IN a certain time, EVERY x time or simply via a CRON statement.
安装:gem install rufus-scheduler(gem安装是前提,再次不多言)
使用:rufus-scheduler可以指定在特定时间时执行,在从此刻开始间隔多长时间执行,在特定时间间隔内循执行,在特定的cron时间执行。例子如下:
1:指定特定时间(或者超过指定时间)执行
require 'rufus-scheduler'
scheduler = Rufus::Scheduler.new puts Time.new
puts 'process begin----'
scheduler.at '2013-10-25 08:39:36 -0700' do
puts Time.new
puts 'Time is up'
puts 'order pizza'
end
scheduler.join
输出结果:
2013-10-25 08:38:09 -0700
process begin----
2013-10-25 08:39:36 -0700
Time is up
order pizza
如果设置的at时间在程序运行之前,比如设置的at时间为:2013-10-25 08:39:36。程序运行时的时间为2013-10-25 08:34:36。那么程序运行时候就执行设置的事件
举个例子:
require 'rufus-scheduler'
scheduler = Rufus::Scheduler.new puts Time.new
puts 'process begin----'
scheduler.at '2013-10-25 08:39:36 -0700' do
puts Time.new
puts 'Time is up'
puts 'order pizza'
end
scheduler.join
输出结果:
2013-10-25 08:45:53 -0700
process begin----
2013-10-25 08:45:53 -0700
Time is up
order pizza
2:在从此刻开始间隔多长时间执行
require 'rufus-scheduler'
scheduler = Rufus::Scheduler.new puts Time.new
scheduler.in '1s' do
puts Time.new
puts 'Hello...Word'
end
scheduler.join
输出结果:
2013-10-25 02:56:02 -0700
2013-10-25 02:56:03 -0700
Hello... Word
3:在特定时间间隔内执行
require 'rufus-scheduler'
scheduler = Rufus::Scheduler.new puts Time.new
scheduler.every '1s' do
puts Time.new
puts 'Hello... Word'
end
scheduler.join
输出结果:
2013-10-25 03:05:38 -0700
2013-10-25 03:05:39 -0700
Hello... Word
2013-10-25 03:05:41 -0700
Hello... Word
2013-10-25 03:05:42 -0700
Hello... Word
2013-10-25 03:05:43 -0700
Hello... Word
2013-10-25 03:05:44 -0700
Hello... Word
4:在特定的cron时间执行
require 'rufus-scheduler'
scheduler = Rufus::Scheduler.new puts Time.new
puts 'process begin----'
scheduler.cron '/1 * * * *' do
puts Time.new
puts 'Hello word'
end
scheduler.join
输出结果:
2013-10-25 08:57:46 -0700
process begin----
2013-10-25 08:58:00 -0700
Hello word
2013-10-25 08:59:00 -0700
Hello word
2013-10-25 09:00:00 -0700
Hello word
2013-10-25 09:01:00 -0700
Hello word
2013-10-25 09:02:00 -0700
Hello word
2013-10-25 09:03:00 -0700
Hello word
至于cron的使用方法,请参考cron相关文章。
此文只是Ruby定时任务的初步,在下一篇中和大家一起进入深一步的分析。
Ruby 定时任务之一(初步尝试)的更多相关文章
- Python爬虫学习:二、爬虫的初步尝试
我使用的编辑器是IDLE,版本为Python2.7.11,Windows平台. 本文是博主原创随笔,转载时请注明出处Maple2cat|Python爬虫学习:二.爬虫的初步尝试 1.尝试抓取指定网页 ...
- 用R进行微博分析的初步尝试
新浪微博如火如荼,基于微博的各种应用也层出不穷. 有一种共识似乎是:微博数据蕴含着丰富的信息,加以适当的挖掘.可以实现众多商业应用.恰好社会网络分析也是我之前有所了解并持续学习的一个领域,因此我做了微 ...
- OSX 上初步尝试 asp.net 5
去年微软最令开源狗界振奋的消息就是 ASP.NET 的开放与开源这一消息了. 根据微软的介绍,与我之前的一些总结,可以看到 ASP.NET 以及 .NET 平台会有下面几个变化: 代码使用 Apach ...
- 对quartz定时任务的初步认识
已经好久没有写技术博文了,今天就谈一谈我前两天自学的quartz定时任务吧,我对quartz定时任务的理解,就是可以设定一个时间,然后呢,在这个时间到的时候,去执行业务逻辑,这是我的简单理解,接下来看 ...
- nginx初步尝试
导师要我学习下nginx,弄个简单的负载均衡出来,具体就是请求发送到nginx上,然后nginx将请求转发到后面的两个jetty应用上,这两个应用的代码是一样的,只是监听的端口不同,由于是简单尝试,因 ...
- 【阿里云产品公测】性能测试服务PTS的初步尝试
性能测试服务PTS,对于像我这样对测试毫无概念的新手来说,这服务真的太好了,使用简单,官方教程又明细,连我这样的新手一看都明白了怎样使用. _%GGl$kH 下面是我来简单尝试一下,更多功 ...
- 学习DDD的初步尝试,从最基础的开始,业务介绍,划分限界上下文 ,建立模型
Conference业务简介 Conference是这样一个系统,它提供了一个在线创建会议以及预订会议座位的平台.这个系统的用户有两类: 1:客户,可以创建和管理会议. 2:会议座位预定者,可以预订会 ...
- 【TensorFlow探索之一】MNIST的初步尝试
最近在学习TensorFlow,尝试的第一个项目是MNIST.首先给出源码地址. 1 数据集的获取 我们可以直接运行下面的代码,来获取到MNIST的数据集. from tensorflow.examp ...
- Unreal Engine 4 蓝图完全学习教程(二)—— 初步尝试
本篇尝试使用蓝图.蓝图是使用专门的编辑器进行编程. Ⅰ.3类蓝图 ①关卡蓝图:前面提到过,关卡是指在UE中制成的游戏场景.关卡蓝图是用于制作当前游戏场景的程序.在UE中进行编程就是在创建关卡蓝图. ② ...
随机推荐
- 连续小波变换(CWT)
整理下时频分析变换的方法,遇见好的文章就记录下来了,本篇博客参考知乎https://www.zhihu.com/topic/19621077/top-answers上的一个回答,自己手敲一遍,增强记忆 ...
- 【Single Number】cpp
题目: Given an array of integers, every element appears twice except for one. Find that single one. No ...
- 数据库脚本开发日志模板 —— 项目需求 A
前言: 在经历的几家公司的多个项目开发管理中,用 git 或者 svn来管理项目代码,都着重项目代码的管理,却疏于相应脚本的管理.本文可以参考,作为项目需求对应脚本开发记录文件(也建议用单个文件夹下放 ...
- IOS开发学习笔记012-核心语法
1.点语法 2.成员变量的作用域 3. @property和@synthesize 4.id类型 5.构造方法 6.自定义构造方法 7.模板修改 8.Category - 分类 9.类扩展 一.点语法 ...
- 用Python 3写的一个Spider小爬虫(使用内置urllib模块and正则表达式)
用Python写了一个Spider小爬虫,爬一爬斗鱼“王者荣耀”在线直播的主播及人气
- 13 Java内存模型
数据竞争 int a=0, b=0; public void method1() { int r2 = a; b = 1; } public void method2() { int r1 = b; ...
- c++ 运算符重载operator
一般格式为: 函数类型 operator 运算符名称(形参列表){ 对运算符的重载 } 注意函数名是由operator和运算符组成.在上面的一般格式中,operator是关键字,是专门用于重载运算符函 ...
- [转]Pycharm 断点调试方法
转自: https://blog.csdn.net/u013088062/article/details/50216015
- 微信小程序--问题汇总及详解之tab切换
设置背景颜色就直接在page里设置 page {background-color: rgb(242, 242, 242);} tab切换: navigator 页面链接 传参的格式为url=&q ...
- Ansible实战之Nginx高可用代理LNMP-wordpress
author:JevonWei 版权声明:原创作品 blog:http://119.23.52.191/ --- 实验环境:前端使用Nginx做代理服务器,静态资源经由缓存服务器,连接后端web集群, ...