Pluralsight OS module
os.chdir('/' + environment + '/sasdata/EWST/automation/rfw_batch_scheduler/code')
os.getcwd()
Pluralsight CSV:
for file_to_process in files_to_process:
with open(file_to_process) as csv_file:
csv_reader = csv.DictReader(csv_file, delimiter=',', quotechar='"')
for row in csv_reader:
print(row['startdate'] + ' ' + row['schedulehr'] + ' ' + row['schedulemin'])
O'Rielly Date and Time:
import datetime 
today = datetime.date.today() 
yesterday = today - datetime.timedelta(days=l)
tomorrow = today + datetime.timedelta(days=l) 
print yesterday, today, tomorrow 
#emits: 2004-11-17 2004-11-18 2004-11-19 
#Note output will be object
>>> anniversary =  today + datetime.timedelta(days=365)  #add 1 year 
>>> print anniversary 
2005-11-18 
>>> t = datetime.datetime.today()  # get right now
>>> t
datetime.datetime(2004, 11, 19, 10, 12, 43, 8010000)
>>>  t2 = t + datetime.timedelta(seconds=1) 	# add 1 second 
>>>  t2
datetime.datetime(2004, 11, 19, 10, 12, 44, 8010000)
>>>  t3 = t + datetime.timedelta(seconds=3600)	# add 1 hour
>>>  t3
datetime.datetime(2004, 11, 19, 11, 12, 44, 8010000)
Python Code to schedule a process:
from __future__ import print_function
from dateutil import rrule
import datetime
import csv
import os, sys, stat, glob
import shutil
import subprocess
environment="prd"
#To calculate the minutes to sleep
def mins_between(start_date, end_date):
 mins=rrule.rrule(rrule.MINUTELY, dtstart=start_date, until=end_date)
 return mins.count()
while True:
  os.chdir('/' + environment + '/sasdata/testautomation/project/input')
  files_to_process=glob.glob("*csv")
  for file_to_process in files_to_process:
   with open(file_to_process) as csv_file:
    csv_reader = csv.DictReader(csv_file, delimiter=',', quotechar='"')
    for row in csv_reader:
     session_id=row['session_id']
     userid=session_id.split("_")[2]
     startdate=row['startdate']
     dd=startdate[:2]
     mm=startdate[2:4]
     yyyy=str(20)+startdate[4:6]
     hr=row['schedulehr']
     mn=row['schedulemin']
     time_to_sleep=mins_between(datetime.datetime.today(), datetime.datetime(int(yyyy),int(mm),int(dd),int(hr),int(mn)))
     #print(str(time_to_sleep) + " " + file_to_process)
     if time_to_sleep > 0:
     	#print(str(time_to_sleep) + " " + file_to_process + " " + session_id)
     	f1=open('/' + environment + '/sasdata/testautomation/project/jobs/' + file_to_process, 'w+')
     	print("sleep " + str(time_to_sleep) + "m", file=f1)
     	print('sudo -u ' + userid + " " +  "/prd/sasconfig/Lev1/SASApp/BatchServer/sasbatch.sh /prd/sasdata/testsasmacros/RFW_TASK_Execution.sas -sysparm " + session_id + " -log /prd/sasdata/testautomation/project/log/" + session_id + ".log", file=f1)
     	f1.close()
     	os.chmod('/' + environment + '/sasdata/testautomation/project/jobs/' + file_to_process, stat.S_IRWXU | stat.S_IRWXG)
     	script_to_execute='/' + environment + '/sasdata/testautomation/project/jobs/' + file_to_process
     	os.system(script_to_execute + ' &')
     	#subprocess.call([script_to_execute])
     	shutil.move('/' + environment + '/sasdata/testautomation/project/input/' + file_to_process, '/' + environment + '/sasdata/testautomation/project/processed/' + file_to_process)
     else:
      shutil.move('/' + environment + '/sasdata/testautomation/project/input/' + file_to_process, '/' + environment + '/sasdata/testautomation/project/failed/' + file_to_process)
No comments:
Post a Comment