Flow_0pp3wm0 { "process_model_time_unit": ["seconds", "minutes"], "process_model_time_elapsed": [1, 1] } { "process_model_expires_in_seconds": [ 1, 60 ] } Flow_1x4kjsz Flow_01w3rxo time_config = zip(process_model_time_unit, process_model_time_elapsed) def to_seconds(config): return timedelta(**{config[0]: config[1]}).total_seconds() process_model_expires_in_seconds = list(map(to_seconds, time_config)) del(time_config) del(process_model_time_elapsed) del(process_model_time_unit) ProcessModelTTL Flow_0emb6j8 Flow_1y9xe99 Flow_1x4kjsz Flow_18h0rzg Flow_0irycq7 Flow_0pp3wm0 Flow_0mgnrik False Flow_0mgnrik Flow_0emb6j8 timedelta(minutes=10) Flow_18h0rzg Flow_1y9xe99 #started=now() times_run = 0 total_instances_deleted = 0 Flow_1bwzp86 Flow_0irycq7 times_run = times_run + 1 total_instances_deleted = total_instances_deleted + rows_affected del(rows_affected) del(process_instance_delete_criteria) Flow_0zkaxwb Flow_1bwzp86 rows_affected = delete_process_instances_with_criteria(process_instance_delete_criteria) ## optimization: ## after delete, what is the next candidate for delete #next_delete_time_in_seconds = reap_current_process_instances(data_from_dmn) #next_delete_time_in_seconds *= 110% # padding to help with race conditions ll { "process_model_name": ["a", "b", "c"], "process_model_status": [ ["complete"], ["user_input_required", "faulted"], ["complete", "error"] ], "process_model_expires_in_seconds": [1, 60, 300] } { "process_instance_delete_criteria": [ { "last_updated_delta": 1, "name": "a", "status": [ "complete" ] }, { "last_updated_delta": 60, "name": "b", "status": [ "user_input_required", "faulted" ] }, { "last_updated_delta": 300, "name": "c", "status": [ "complete", "error" ] } ] } Flow_01w3rxo Flow_0zkaxwb def to_delete_criteria(config): return { "name": config[0], "status": config[1], "last_updated_delta": config[2], } process_instance_delete_criteria = list(map(to_delete_criteria, zip(process_model_name, process_model_status, process_model_expires_in_seconds))) del(process_model_name) del(process_model_status) del(process_model_expires_in_seconds)