#coding:utf-8 import re,time import datetime import sys,os import django reload(sys) sys.setdefaultencoding('utf8') sys.path.append('/mnt/bzyifeng/src') os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' django.setup() import common.models as cm def calc_cutoff_time(cycle): """计算任务截止时间 """ data = [] today = datetime.datetime.now().date() today = datetime.datetime.strptime(datetime.datetime.strftime(today,"%Y-%m-%d %H:%M:%S"),"%Y-%m-%d %H:%M:%S") times = re.search(r"(\d+).*",cycle.split("/")[0]).groups()[0] day = re.search(r"(\d+)(.*)",cycle.split("/")[1]).groups()[0] day_type = re.search(r"(\d+)(.*)",cycle.split("/")[1]).groups()[1] if day_type == u"日": day = int(day) if day_type == u"周": day = int(day)*7 if day_type == u"月": day = int(day)*30 tomorrow = today + datetime.timedelta(days=day) if times and int(times)>0: step = 24*day/int(times) for i in range(0,int(times)): cutoff_time = today + datetime.timedelta(seconds=60*60*(i+1)*step) if cutoff_time >= tomorrow: cutoff_time = cutoff_time + datetime.timedelta(seconds=-1) data.append(cutoff_time) return data def gen_monittasks(): """ """ mtset = cm.MonitTask.objects.all() for mt in mtset: name = mt.name riskpoint_id = mt.riskpoint_id department_id = mt.department_id enterprise_id = mt.enterprise_id risk_level = mt.risk_level riskpoint_item = mt.riskpoint_item riskpoint_item0 = mt.riskpoint_item0 task_id = mt.id cycle = mt.cycle cutoff_times = calc_cutoff_time(cycle) for cutoff_time in cutoff_times: print "开始生产巡检任务:{}({})".format(name,cutoff_time) obj,flag = cm.MonitJob.objects.get_or_create( **{"task_id":task_id,"name":name,"cutoff_time":cutoff_time, "department_id":department_id,"enterprise_id":enterprise_id, "risk_level":risk_level,"riskpoint_item":riskpoint_item,"riskpoint_item0":riskpoint_item0}) if __name__ == "__main__": gen_monittasks()