From 7937b4fbbd104c37fd0df00ad75f48b5a0c72c73 Mon Sep 17 00:00:00 2001 From: Matthew Jones Date: Wed, 22 Jul 2015 15:24:52 -0400 Subject: [PATCH] Implement a stdout tmp cleanup task * Cleans up stdout tempfiles generated for download * Runs every 3 hours, cleans up files older than 1 day --- awx/main/tasks.py | 11 +++++++++++ awx/settings/defaults.py | 4 ++++ 2 files changed, 15 insertions(+) diff --git a/awx/main/tasks.py b/awx/main/tasks.py index da798a59f2..ece7e1e7a6 100644 --- a/awx/main/tasks.py +++ b/awx/main/tasks.py @@ -114,6 +114,17 @@ def tower_periodic_scheduler(self): new_unified_job.socketio_emit_status("failed") emit_websocket_notification('/socket.io/schedules', 'schedule_changed', dict(id=schedule.id)) +@task(bind=True) +def clean_stdout_tempfiles(self): + nowtime = time.time() + removed = 0 + for this_file in os.listdir(settings.STDOUT_TEMP_DIR): + this_file = os.path.join(settings.STDOUT_TEMP_DIR, this_file) + if "towerjob" in this_file and os.stat(this_file).st_mtime < nowtime - 86400: + os.remove(this_file) + removed += 1 + print("Removed %d files" % removed) + @task() def notify_task_runner(metadata_dict): """Add the given task into the Tower task manager's queue, to be consumed diff --git a/awx/settings/defaults.py b/awx/settings/defaults.py index 912fe25e1e..f99d389e52 100644 --- a/awx/settings/defaults.py +++ b/awx/settings/defaults.py @@ -303,6 +303,10 @@ CELERYBEAT_SCHEDULE = { 'task': 'awx.main.tasks.tower_periodic_scheduler', 'schedule': timedelta(seconds=30) }, + 'job_stdout_cleanup': { + 'task': 'awx.main.tasks.clean_stdout_tempfiles', + 'schedule': timedelta(hours=3) + }, } # Any ANSIBLE_* settings will be passed to the subprocess environment by the