Python: Diretório de bloqueio
AFAIK, este código pode ser usado para bloquear um diretório:
class LockDirectory(object):
def __init__(self, directory):
assert os.path.exists(directory)
self.directory = directory
def __enter__(self):
self.dir_fd = os.open(self.directory, os.O_RDONLY)
try:
fcntl.flock(self.dir_fd, fcntl.LOCK_EX | fcntl.LOCK_NB)
except IOError as ex:
if ex.errno != errno.EAGAIN:
raise
raise Exception('Somebody else is locking %r - quitting.' % self.directory)
def __exit__(self, exc_type, exc_val, exc_tb):
self.dir_fd.close()
Mas de acordo com as respostas desta pergunta, não é possível bloquear um diretório: Python: Bloquear um diretório
O que há de errado com o código acima?
Eu só preciso suportar a versão linux atual. Não há Windows, Mac ou outro unix.