# -*- coding: utf-8 -*-
# Copyright (c) 2009 Evan Fosmark
-# Copyright (c) 2014 kaliko <kaliko@azylum.org>
+# Copyright (c) 2014, 2021 kaliko <kaliko@azylum.org>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
import os
import time
+
class FileLockException(Exception):
"""FileLock Exception"""
- pass
+
class FileLock:
""" A plain file lock whit context-manager"""
self.filedsc = None
self.is_locked = False
dirname = os.path.dirname(file_name)
- self.lockfile = os.path.join(dirname, '{0}.lock'.format(file_name))
+ self.lockfile = os.path.join(dirname, 'f{file_name}.lock')
self.file_name = file_name
self.timeout = timeout
self.delay = delay
while True:
try:
self.filedsc = os.open(self.lockfile,
- os.O_CREAT|os.O_EXCL|os.O_RDWR)
+ os.O_CREAT | os.O_EXCL | os.O_RDWR)
break
except OSError as err:
if err.errno != errno.EEXIST:
raise
if (time.time() - start_time) >= self.timeout:
- raise FileLockException('Timeout occured.')
+ raise FileLockException('Timeout occured.') from err
time.sleep(self.delay)
self.is_locked = True
self.acquire()
return self
- def __exit__(self, type, value, traceback):
+ def __exit__(self, ex_type, ex_value, ex_traceback):
"""end of the with statement
"""
if self.is_locked: