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中进行编程就是在创建关卡蓝图. ② ...
随机推荐
- IOS开发学习笔记006 - 指针
C语言 指针 简单使用如下: int *p;//定义 int a = 10; p = &a;//赋值 int * b = &a;//定义并赋值 定义格式:类型 *指针变量名: 注意事项 ...
- Win7系统安装MySQL5.5.21图解
Win7系统安装MySQL5.5.21图解 大家都知道MySQL是一款中.小型关系型数据库管理系统,很具有实用性,对于我们学习很多技术都有帮助,前几天我分别装了SQL Server 2008和Orac ...
- [oldboy-django][6其他]学习django网站推荐
http://www.cnblogs.com/holbrook/archive/2012/02/19/2358704.html alex: http://www.cnblogs.com/alex371 ...
- 使用CORS解决flask前端页面跨域问题
from flask import Flask from flask_cors import CORS app = Flask(__name__) CORS(app) @app.route(" ...
- 关于mybitis的异常总结
由于原项目中系统登录用户表中新添加了字段来关联其他表,但原来的mapper和bean就得重新再逆向出来,逆向后,就参照着原来你mapper来添加一些自定义在mapper的方法,那么接下来就爆出异常了 ...
- Map 中的EntrySet() ,Map的遍历
我们循环Map时一般用到EntrySet(),EntrySet() 返回的时Set集合(Set<Map.Entry<K, V>>). 那么这里的有Map.Entry< ...
- ftp下出现“当前的安全设置不允许从该位置下载文件”提示
在资源管理器中使用ftp协议下载文件时,提示“当前的安全设置不允许从该位置下载文件”,下载失败. 解决方法: 1.在自己的电脑上打开Internet选项
- Struts2 改变语言状态
只要在请求中增加 request_locale=en_US 参数,就可以实现语言的切换,内部由拦截器实现
- POJ 3621 Sightseeing Cows(最优比例环+SPFA检测)
Sightseeing Cows Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10306 Accepted: 3519 ...
- HashMap实现原理及源码分析(jdk1.8)
HashMap底层由数组+链表+红黑树组成,可接受null值,非线程安全 1.基本属性 transient Node<K,V>[] table; //hashmap数组 static fi ...