Sunday, 14 June 2020

Python Tech Courses

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'])

 


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

Golang - Email - Secure code warrior

 package mail import ( "net/smtp" "gobin/config" ) var ( emailConfig config.Email ) type Mail struct { Destinati...