Mercurial > templog
changeset 471:4414bf8dddaa
use better pidlockfile
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Fri, 14 Jun 2013 23:32:06 +0800 |
parents | de4abcbe8f46 |
children | b096fc6d1ef4 |
files | py/tempserver.py |
diffstat | 1 files changed, 18 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/py/tempserver.py Thu Apr 25 21:03:53 2013 +0800 +++ b/py/tempserver.py Fri Jun 14 23:32:06 2013 +0800 @@ -6,7 +6,7 @@ import gevent import gevent.monkey -import lockfile +import lockfile.pidlockfile import daemon import utils @@ -103,9 +103,23 @@ def main(): setup_logging() - pidpath = os.path.join(os.path.dirname(__file__), 'tempserver-lock') - pidf = lockfile.FileLock(pidpath, threaded=False) - pidf.acquire(0) + pidpath = os.path.join(os.path.dirname(__file__), 'tempserver.pid') + pidf = lockfile.pidlockfile.PIDLockFile(pidpath, threaded=False) + try: + pidf.acquire(0) + pidf.release() + except lockfile.AlreadyLocked, e: + pid = pidf.read_pid() + print>>sys.stderr, "Locked by PID %d" % pid + if pid > 0: + try: + os.kill(pid, 0) + # must still be running PID + raise e + except OSError: + # isn't still running, steal the lock + print>>sys.stderr, "Unlinking stale lockfile %s for pid %d" % (pidpath, pid) + pidf.break_lock() if '--daemon' in sys.argv: logpath = os.path.join(os.path.dirname(__file__), 'tempserver.log')