import os from time import time from webnotes.utils import get_site_path class LockTimeoutError(Exception): pass def create_lock(name): lock_path = get_lock_path(name) if not check_lock(lock_path): return touch_file(lock_path) else: return False def touch_file(path): with open(path, 'a'): os.utime(path, None) return True def check_lock(path): if not os.path.exists(path): return False if time() - os.path.getmtime(path) > 600: raise LockTimeoutError(path) return True def delete_lock(name): lock_path = get_lock_path(name) try: os.remove(lock_path) except OSError: pass return True def get_lock_path(name): name = name.lower() lock_path = get_site_path(name + '.lock') return lock_path