任务需要每隔五分钟执行一次,间隔时间可以在任意时间被改变,写一个方法判断当前时间是否有应该执行的任务。
如:script_begin_time从10:00开始,上一次判断时间update_time=10:05,当前时间10:12,间隔时间为5分钟的任务应该去计算10:10分的数据,间隔为4分钟的,则是10:08,10:12,间隔3分钟的10:06,10:09,10:12。

#!/bin/env python
#coding=utf-8
import time
# 将字符串时间转化为时间戳,old参数格式为:  "2014-05-16 10:56:00"
def change(old):
  timeArray = time.strptime(old,"%Y-%m-%d %H:%M:%S")
  timeStamp = int(time.mktime(timeArray))
  return timeStamp
# 将时间戳转化为字符串时间
def change2(old2):
  timeArray = time.localtime(old2)
  timeStamp = time.strftime("%Y-%m-%d %H:%M:%S",timeArray)
  return timeStamp
'''
@begin_time: 程序开始时间(不会变化),Type=time
@update_time: 上一次执行任务的时间,Type=time
@time_interval: 时间间隔,Type=int
计算从当前到上一次执行任务期间内,有多少个时间点应该执行任务
@return 返回[time,] 表示某个时间间隔条件下有哪些时间点未执行任务
'''
def compTime(script_begin_time,update_time,time_interval):
  now = time.time()
  interval = time_interval*60
  m = ((now - change(script_begin_time))/interval)
  n = ((change(update_time) - change(script_begin_time))/interval)
  l = []
  for i in range(int(m-n)):
    t = (n+i+1)*interval+change(script_begin_time)
    l.append(change2(t))
  return l
print compTime("2014-05-15 10:30:00","2014-05-16 10:25:00",10)

执行结果为:

['2014-05-16 10:30:00', '2014-05-16 10:40:00', '2014-05-16 10:50:00', '2014-05-16 11:00:00', '2014-05-16 11:10:00']