Skip to content

Instantly share code, notes, and snippets.

@shnjp
Created February 18, 2013 18:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shnjp/4979363 to your computer and use it in GitHub Desktop.
Save shnjp/4979363 to your computer and use it in GitHub Desktop.
"""
uwsgiのエントリポイントの中でコレを実行すれば、ファイルに変更があった時にリロードする。
"""
import uwsgi
from uwsgidecorators import timer
from werkzeug.serving import _iter_module_files, _log
import os
# TODO: uwsgi.optsから読み込む
interval = 1
extra_files = None
mtimes = {}
@timer(1)
def watch_files(*args):
from itertools import chain
for filename in chain(_iter_module_files(), extra_files or ()):
try:
mtime = os.stat(filename).st_mtime
except OSError:
continue
old_time = mtimes.get(filename)
if old_time is None:
mtimes[filename] = mtime
continue
elif mtime > old_time:
_log('info', ' * Detected change in %r, reloading' % filename)
uwsgi.reload()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment