def updateNextRun(jobData): try: interval = int(jobData["interval"]) if jobData["lastRunDate"] == "-1": if interval < 0: jobData["nextRunTime"] = Generic.addTime( Generic.strToTime(jobData["scheuledTime"]), (-1 * interval)) #print(jobData["nextRunTime"]) jobData["nextRunDate"] = Generic.getDate() else: jobData["nextRunTime"] = jobData["scheuledTime"] jobData["nextRunDate"] = Generic.dateToStr( Generic.addDate(Generic.strToDate(Generic.getDate()), interval)) else: if interval < 0: jobData["nextRunTime"] = Generic.addTime( Generic.strToTime(jobData["nextRunTime"]), (-1 * interval)) #print(jobData["nextRunTime"]) jobData["nextRunDate"] = Generic.getDate() else: jobData["nextRunTime"] = jobData["scheuledTime"] jobData["nextRunDate"] = Generic.dateToStr( Generic.addDate( Generic.strToDate(jobData["nextRunDate"]), interval)) return jobData except Exception as e: log("Error_Jobs_updateNextRun@" + str(e))
def lastRunUpdate(jobName): try: data = Json_evaluation.getJsonByKey(filename=__jobFile__, key=jobName) data = Job.updateNextRun(data) data["lastRunDate"] = Generic.getDate() n_data = {} n_data[jobName] = data #Next scheduled time update Json_evaluation.updateJson(dict=n_data, filename=__jobFile__) log("Job " + jobName + " last Run Updated!!") except Exception as e: log("Error_Jobs_lastRunUpdate@" + str(e))
def getActiveJobs(path=__guidePath__): try: data = Job.evaluateJob(path) #print(data) curDate = Generic.strToDate(Generic.getDate()) activeJobs = {} for key in data.keys(): if Generic.strToDate(data[key]["startDate"] ) <= curDate and Generic.strToDate( data[key]["endDate"]) >= curDate and ( data[key]["isActive"] == 1 or data[key]["isActive"] == "on"): activeJobs[key] = data[key] return activeJobs except Exception as e: log("Error_Jobs_isJobEligibleToRun@" + str(e)) return 0
def prepareJobQueue(): try: todayList = {} data = Job.evaluateJob() #print(data) curDate = Generic.strToDate(Generic.getDate()) curTime = Generic.strToTime(Generic.getTime()) #print(curTime) for key in data.keys(): timeKeyword = "" lastRunDate = data[key]["lastRunDate"] if data[key]["lastRunDate"] == "-1": timeKeyword = "scheuledTime" else: timeKeyword = "nextRunTime" if Generic.strToDate( data[key] ["startDate"]) <= curDate and Generic.strToDate( data[key]["endDate"]) >= curDate and ( data[key]["isActive"] == 1 or data[key]["isActive"] == "on") and ( lastRunDate == "-1" or Job.isJobEligibleToRun( int(data[key]["interval"]), curDate, curTime, data[key][timeKeyword]) == 1) and Generic.strToTime( data[key][timeKeyword]) >= curTime: todayList[key] = { "scheduledTime": data[key][timeKeyword], "remainingSec": Generic.timeDiff(Generic.getTime(), data[key][timeKeyword]), "nextRunDate": "-" if timeKeyword == "scheuledTime" else data[key]['nextRunDate'], "nextRunTime": "-" if timeKeyword == "scheuledTime" else data[key]['nextRunTime'] } #print(todayList) Json_evaluation.writeJSON(data=todayList, filename=__jobQueue__) log("Job Queue Prepared....") except Exception as e: log("Error_Jobs_prepareJobQueue@" + str(e))
def getNearestJob(): #Disabled in v3.0 try: data = Json_evaluation.readJSON(filename=__jobQueue__) #print(data) jobCache = "" curDate = Generic.strToDate(Generic.getDate()) lesserTime = -1 for key in data.keys(): if lesserTime == -1 and Generic.strToTime( data[key]["scheduledTime"]) >= Generic.strToTime( Generic.getTime()): lesserTime = data[key]["remainingSec"] jobCache = key if lesserTime > int( data[key]["remainingSec"]) and Generic.strToTime( data[key]["scheduledTime"]) >= Generic.strToTime( Generic.getTime()): lesserTime = data[key]["remainingSec"] jobCache = key return jobCache except Exception as e: log("Error_Jobs_getNearestJob@" + str(e))