A file monitor and server restarter.
Use this like:
import reloader reloader.install()
Then make sure your server is installed with a shell script like:
err=3 while test "$err" -eq 3 ; do python server.py err="$?" done
or is run from this .bat file (if you use Windows):
@echo off :repeat python server.py if %errorlevel% == 3 goto repeat
or run a monitoring process in Python (paster serve --reload does this).
Use the watch_file(filename) function to cause a reload/restart for other other non-Python files (e.g., configuration files). If you have a dynamic set of files that grows over time you can use something like:
def watch_config_files(): return CONFIG_FILE_CACHE.keys() paste.reloader.add_file_callback(watch_config_files)
Then every time the reloader polls files it will call watch_config_files and check all the filenames it returns.
Install the reloading monitor.
On some platforms server threads may not terminate when the main thread does, causing ports to remain open/locked. The raise_keyboard_interrupt option creates a unignorable signal which causes the whole application to shut-down (rudely).