diff --git a/example/aitf-clean-temporal b/example/aitf-clean-temporal index e4898aef07daf956c4787d7fe63c9292aa71acbd..914e0ac9b2b417e0dcd61156e5da08ba845619a4 100755 --- a/example/aitf-clean-temporal +++ b/example/aitf-clean-temporal @@ -25,6 +25,7 @@ import logging import aitf.ancil import aitf.conlog import csppfetch +from csppfetch.exclusivelockfile import PIDLockFile def parse_args(): @@ -58,7 +59,7 @@ def parse_args(): TEMPORAL_CACHE_ENV = 'CSPP_GEO_AITF_TEMPORAL_CACHE' TEMPORAL_DEFAULT = os.environ.get(TEMPORAL_CACHE_ENV, TEMPORAL_INVALID) ap.add_argument("temporal-dir", metavar = "DIR", nargs='?', - description = f'temporal directory to clean (default: environment variable {TEMPORAL_CACHE_ENV}', + help = f'temporal directory to clean (default: environment variable {TEMPORAL_CACHE_ENV}', default=TEMPORAL_DEFAULT) subgroup = ap.add_mutually_exclusive_group() @@ -106,12 +107,16 @@ def main(): if not args.keep_old: from datetime import datetime stats = csppfetch.CleaningStats() - csppfetch.delete_old_files(args.temporal_dir+"/L1b", args.oldest, stats) - csppfetch.delete_old_files(args.temporal_dir+"/L2", args.oldest, stats) - if args.want_summary: - sys.stdout.write('Expiring Old Data Summary\n') - sys.stdout.write(f' Removed {stats.num_deleted} files totaling {stats.size_deleted} bytes\n') - sys.stdout.write(f' Kept {stats.num_kept} files totaling {stats.size_kept} bytes\n') + with PIDLockFile(args.temporal_dir+"cleaning-process.pid") as has_lock: + if has_lock: + csppfetch.delete_old_files(args.temporal_dir+"/L1b", args.oldest, stats) + csppfetch.delete_old_files(args.temporal_dir+"/L2", args.oldest, stats) + if args.want_summary: + sys.stdout.write('Expiring Old Data Summary\n') + sys.stdout.write(f' Removed {stats.num_deleted} files totaling {stats.size_deleted} bytes\n') + sys.stdout.write(f' Kept {stats.num_kept} files totaling {stats.size_kept} bytes\n') + else: # No lock + sys.stdout.write("Cleaning skipped; another process is already doing so.") return 0