# `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)