]> git.phdru.name Git - m_librarian.git/commitdiff
Feat: Store lock file in a shared directory
authorOleg Broytman <phd@phdru.name>
Sat, 11 May 2019 16:27:33 +0000 (19:27 +0300)
committerOleg Broytman <phd@phdru.name>
Sat, 11 May 2019 16:34:37 +0000 (19:34 +0300)
Use `$UID` as a suffix to separate lock files for different users.

docs-ru/news.rst
docs/news.rst
m_librarian/web/utils.py
tmp/.gitignore [deleted file]

index d2e2c6917f844db5850885f7a7285e9e3c16c5e2..e490c1b86f6a749df2a481f16f5493723bc848d1 100644 (file)
@@ -1,6 +1,14 @@
 Новости
 =======
 
+Версия 0.1.6 (2019-05-??)
+-------------------------
+
+* Поместить файл ``m_librarian.lock`` в общую директорию;
+  использовать ``$UID`` в качестве суффикса имени файла
+  чтобы иметь возможность запускать ``m_librarian``
+  для разных пользователей.
+
 Версия 0.1.5 (2019-02-01)
 -------------------------
 
index cb3e40b3b34bd4691a00863792b2c8cebb659e36..ec811f0943313da39706782f5b85dbea8f514c07 100644 (file)
@@ -1,6 +1,12 @@
 News
 ====
 
+Version 0.1.6 (2019-05-??)
+--------------------------
+
+* Store lock file in a shared directory; use ``$UID`` as a suffix
+  to separate lock files for different users.
+
 Version 0.1.5 (2019-02-01)
 --------------------------
 
index 12be81f47dc572482043dc922c42fea9db637495..8804f3b327df81831fbd707af57def93e965a8e9 100644 (file)
@@ -1,11 +1,20 @@
 from fcntl import flock, LOCK_EX, LOCK_UN, LOCK_NB
-from os import path, remove
+from tempfile import gettempdir
+import os
 import socket
 
 
-lock_fname = path.join(
-    path.dirname(path.dirname(path.dirname(__file__))),
-    'tmp', 'm_librarian.lock')
+if os.access('/var/run/lock', os.W_OK):
+    lock_dir = '/var/run/lock'
+else:
+    lock_dir = gettempdir()
+
+if hasattr(os, 'getuid'):
+    suffix = '-%d' % os.getuid()
+else:
+    suffix = ''
+
+lock_fname = os.path.join(lock_dir, 'm_librarian%s.lock' % suffix)
 
 
 def get_lock(port):
@@ -38,7 +47,7 @@ def close_lock(lock_file):
     lock_file = open(lock_fname, 'w')
     lock_file.write('')
     lock_file.close()
-    remove(lock_fname)
+    os.remove(lock_fname)
 
 
 def get_open_port():
diff --git a/tmp/.gitignore b/tmp/.gitignore
deleted file mode 100644 (file)
index 120f485..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-*
-!/.gitignore