[llvm-commits] [zorg] r146404 - in /zorg/trunk/lnt/lnt: util/wsgi_restart.py viewer/wsgi_restart.py

Daniel Dunbar daniel at zuster.org
Mon Dec 12 11:31:32 PST 2011


Author: ddunbar
Date: Mon Dec 12 13:31:31 2011
New Revision: 146404

URL: http://llvm.org/viewvc/llvm-project?rev=146404&view=rev
Log:
lnt: Move wsgi_restart into util.

Added:
    zorg/trunk/lnt/lnt/util/wsgi_restart.py
      - copied, changed from r146403, zorg/trunk/lnt/lnt/viewer/wsgi_restart.py
Removed:
    zorg/trunk/lnt/lnt/viewer/wsgi_restart.py

Copied: zorg/trunk/lnt/lnt/util/wsgi_restart.py (from r146403, zorg/trunk/lnt/lnt/viewer/wsgi_restart.py)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/util/wsgi_restart.py?p2=zorg/trunk/lnt/lnt/util/wsgi_restart.py&p1=zorg/trunk/lnt/lnt/viewer/wsgi_restart.py&r1=146403&r2=146404&rev=146404&view=diff
==============================================================================
    (empty)

Removed: zorg/trunk/lnt/lnt/viewer/wsgi_restart.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/viewer/wsgi_restart.py?rev=146403&view=auto
==============================================================================
--- zorg/trunk/lnt/lnt/viewer/wsgi_restart.py (original)
+++ zorg/trunk/lnt/lnt/viewer/wsgi_restart.py (removed)
@@ -1,115 +0,0 @@
-# This code lifted from the mod_wsgi docs.
-
-import os
-import sys
-import time
-import signal
-import threading
-import atexit
-import Queue
-
-_interval = 1.0
-_times = {}
-_files = []
-
-_running = False
-_queue = Queue.Queue()
-_lock = threading.Lock()
-
-def _restart(path):
-    _queue.put(True)
-    prefix = 'monitor (pid=%d):' % os.getpid()
-    print >> sys.stderr, '%s Change detected to \'%s\'.' % (prefix, path)
-    print >> sys.stderr, '%s Triggering process restart.' % prefix
-    os.kill(os.getpid(), signal.SIGINT)
-
-def _modified(path):
-    try:
-        # If path doesn't denote a file and were previously
-        # tracking it, then it has been removed or the file type
-        # has changed so force a restart. If not previously
-        # tracking the file then we can ignore it as probably
-        # pseudo reference such as when file extracted from a
-        # collection of modules contained in a zip file.
-
-        if not os.path.isfile(path):
-            return path in _times
-
-        # Check for when file last modified.
-
-        mtime = os.stat(path).st_mtime
-        if path not in _times:
-            _times[path] = mtime
-
-        # Force restart when modification time has changed, even
-        # if time now older, as that could indicate older file
-        # has been restored.
-
-        if mtime != _times[path]:
-            return True
-    except:
-        # If any exception occured, likely that file has been
-        # been removed just before stat(), so force a restart.
-
-        return True
-
-    return False
-
-def _monitor():
-    while 1:
-        # Check modification times on all files in sys.modules.
-
-        for module in sys.modules.values():
-            if not hasattr(module, '__file__'):
-                continue
-            path = getattr(module, '__file__')
-            if not path:
-                continue
-            if os.path.splitext(path)[1] in ['.pyc', '.pyo', '.pyd']:
-                path = path[:-1]
-
-            if _modified(path):
-                return _restart(path)
-
-        # Check modification times on files which have
-        # specifically been registered for monitoring.
-
-        for path in _files:
-            if _modified(path):
-                return _restart(path)
-
-        # Go to sleep for specified interval.
-
-        try:
-            return _queue.get(timeout=_interval)
-        except:
-            pass
-
-_thread = threading.Thread(target=_monitor)
-_thread.setDaemon(True)
-
-def _exiting():
-    try:
-        _queue.put(True)
-    except:
-        pass
-    _thread.join()
-
-atexit.register(_exiting)
-
-def track(path):
-    if not path in _files:
-        _files.append(path)
-
-def start(interval=1.0):
-    global _interval
-    if interval < _interval:
-        _interval = interval
-
-    global _running
-    _lock.acquire()
-    if not _running:
-        prefix = 'monitor (pid=%d):' % os.getpid()
-        print >> sys.stderr, '%s Starting change monitor.' % prefix
-        _running = True
-        _thread.start()





More information about the llvm-commits mailing list