任务需要每隔五分钟执行一次,间隔时间可以在任意时间被改变,写一个方法判断当前时间是否有应该执行的任务。
如: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']