Source code for jammy.utils.filelock
import contextlib
import stackprinter
from filelock import FileLock, SoftFileLock
# pylint: disable=broad-except
__all__ = [
"try_filelock",
"get_filelock",
]
[docs]def try_filelock(
fn,
target_file,
is_soft=False,
timeout=20,
):
lock_obj = SoftFileLock if is_soft else FileLock
try:
with lock_obj(f"{target_file}._lock", timeout) as flock:
if flock.is_locked:
fn()
else:
print(f"try_filelock Timeout!!! {target_file}")
except Exception as exc:
stackprinter.show(exc, style="darkbg2")
[docs]@contextlib.contextmanager
def get_filelock(target_file, timeout=20, is_soft=False):
lock_obj = SoftFileLock if is_soft else FileLock
try:
with lock_obj(f"{target_file}._lock", timeout) as flock:
if flock.is_locked:
yield True
else:
print(f"Timeout!!! {target_file}")
yield False
except Exception as exc:
stackprinter.show(exc, style="darkbg2")
yield False