Home

Tags

Lock file python

2012-10-25 python lock file ubuntu

Монопольный доступ к файлу (lockfile) часто применяется когда нужно предотвратить запуск нескольких копий приложения, либо просто монопольный доступ на запись, проверено на ubuntu + python 2.7

Пример использования lockfile

def lock_file(fname):
    import fcntl
    _lock_file = open(fname, 'a+')
    try:
        fcntl.flock(_lock_file.fileno(), fcntl.LOCK_EX | fcntl.LOCK_NB)
    except IOError:
        return None
    return _lock_file

lock = lock_file('/tmp/test')
print 1, lock
lock2 = lock_file('/tmp/test')
print 2, lock2

del lock

lock3 = lock_file('/tmp/test')
print 3, lock3

Результат
1 <open file '/tmp/test', mode 'a+' at 0xb73003e8>
2 None
3 <open file '/tmp/test', mode 'a+' at 0xb73003e8>

"Отпустить" lockfile можно вызвав "del lockfile", либо он сам "освободится" при выходе из функции или программы - когда переменная будет не нужна.