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