diff options
Diffstat (limited to 'bin/common/srtool_update.py')
-rwxr-xr-x | bin/common/srtool_update.py | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/bin/common/srtool_update.py b/bin/common/srtool_update.py index 131918ca..ec8554ea 100755 --- a/bin/common/srtool_update.py +++ b/bin/common/srtool_update.py @@ -91,8 +91,9 @@ def run_updates(force_all,name_filter,is_trial): cur_write = conn.cursor() time_now = datetime.now() #datetime.now(pytz.utc) - print("SRTool Update: time_now = %s" % time_now.strftime(ORM.DATASOURCE_DATETIME_FORMAT)) - status_str = "====================\n" + if verbose: + print("SRTool Update: time_now = %s" % time_now.strftime(ORM.DATASOURCE_DATETIME_FORMAT)) + status_str = "============================================================\n" status_str += "Update: Date=%s,Filter='%s',Force=%s\n" % (time_now.strftime(ORM.DATASOURCE_DATETIME_FORMAT),name_filter,force_all) #get sources that have update command @@ -172,16 +173,24 @@ def run_updates(force_all,name_filter,is_trial): # Not yet? if testdate > time_now: - status_str += " Skip '%s': update time not reached (%s)\n" % (source[ORM.DATASOURCE_DESCRIPTION],testdate.strftime(ORM.DATASOURCE_DATETIME_FORMAT)) + time_to_go = testdate - time_now + frequency_str = ORM.get_orm_string(source[ORM.DATASOURCE_UPDATE_FREQUENCY],ORM.DATASOURCE_FREQUENCY_STR) + status_str += " Skip (next=%s in days=%2s minutes=%4s,%7s):%s\n" % (testdate.strftime(ORM.DATASOURCE_DATETIME_FORMAT),time_to_go.days,time_to_go.seconds//60,frequency_str,source[ORM.DATASOURCE_DESCRIPTION]) continue else: - status_str += " UPDATE '%s': update time reached (%s)\n" % (source[ORM.DATASOURCE_DESCRIPTION],testdate.strftime(ORM.DATASOURCE_DATETIME_FORMAT)) + status_str += " UPDATE '%s': Time reached (%s)\n" % (source[ORM.DATASOURCE_DESCRIPTION],testdate.strftime(ORM.DATASOURCE_DATETIME_FORMAT)) # Execute the update if is_trial: print("TRIAL: Update required\t...\texecuting '%s'" % (source[ORM.DATASOURCE_UPDATE])) status_str += " > TRIAL: execute '%s'\n" % (source[ORM.DATASOURCE_UPDATE]) else: + # First update the datasource's last_updated_date so avoid dual triggers + # (e.g. a manual test run on top of an automatic run) + sql = "UPDATE orm_datasource SET lastUpdatedDate=? WHERE id=?" + cur_write.execute(sql, (time_now.strftime(ORM.DATASOURCE_DATETIME_FORMAT),source[ORM.DATASOURCE_ID],) ) + conn.commit() + print("Update required\t...\texecuting '%s'" % (source[ORM.DATASOURCE_UPDATE])) status_str += " > EXECUTE: execute '%s'\n" % (source[ORM.DATASOURCE_UPDATE]) master_write("SRTOOL_UPDATE:%s:%s:%s\n" %(time_now.strftime(ORM.DATASOURCE_DATETIME_FORMAT),source[ORM.DATASOURCE_DESCRIPTION],source[ORM.DATASOURCE_UPDATE])) @@ -190,10 +199,6 @@ def run_updates(force_all,name_filter,is_trial): update_command += " --force" os.system(os.path.join(script_pathname, update_command)) - # Reset datasource's last_updated_date - sql = "UPDATE orm_datasource SET lastUpdatedDate=? WHERE id=?" - cur_write.execute(sql, (time_now.strftime(ORM.DATASOURCE_DATETIME_FORMAT),source[ORM.DATASOURCE_ID],) ) - conn.commit() conn.close() # Status summary @@ -213,7 +218,6 @@ def configure_ds_update(datasource_description, frequency, time): conn.commit() conn.close() - ################################# # List update data sources # @@ -236,8 +240,10 @@ def list(): continue frequency_str = ORM.get_orm_string(source[ORM.DATASOURCE_UPDATE_FREQUENCY],ORM.DATASOURCE_FREQUENCY_STR) print(format_str % (source[ORM.DATASOURCE_DATA],source[ORM.DATASOURCE_SOURCE],source[ORM.DATASOURCE_NAME],frequency_str,source[ORM.DATASOURCE_UPDATE_TIME],source[ORM.DATASOURCE_DESCRIPTION])) - if verbose: - print(format_str % ('',source[ORM.DATASOURCE_LASTMODIFIEDDATE],source[ORM.DATASOURCE_LASTUPDATEDDATE],'','','')) + + if verbose: + print('') + run_updates(False,'all',True) ################################# # Start 'cron' job for updates |