paste.reloader – Monitor for file changes to restart the process

A file monitor and server restarter.

Use this like:

..code-block:: Python

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.

Module Contents

paste.reloader.install(poll_interval=1)

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).

class paste.reloader.Monitor(poll_interval)
paste.reloader.watch_file(*args, **kw)