Ñò ô†³Kc @sádZddkZddkZddkZddkZddkZddklZdd„Zde fd„ƒYZ ei i dƒoDydd k lZWnej oqËXd e fd „ƒYZne iZe iZdS( sÊ 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. iÿÿÿÿN(tclassinstancemethodicCs?td|ƒ}tid|iƒ}|itƒ|iƒdS(s, 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). t poll_intervalttargetN(tMonitort threadingtThreadtperiodic_reloadt setDaemontTruetstart(Rtmontt((s2/usr/lib/python2.6/site-packages/paste/reloader.pytinstall2s  RcBs_eZgZgZgZd„Zd„Zd„Zd„Ze eƒZd„Z e e ƒZ RS(cCsSh|_t|_||_t|iƒ|_|ii|ƒt|i ƒ|_ dS(N( t module_mtimesRt keep_runningRtlisttglobal_extra_filest extra_filest instancestappendtglobal_file_callbackstfile_callbacks(tselfR((s2/usr/lib/python2.6/site-packages/paste/reloader.pyt__init__Fs    cCsBx;to3|iƒptidƒPnti|iƒqWdS(Ni(Rt check_reloadtost_exitttimetsleepR(R((s2/usr/lib/python2.6/site-packages/paste/reloader.pyRNs   cCs t|iƒ}xJ|iD]?}y|i|ƒƒWqtid|IJtiƒqXqWxctii ƒD]R}y |i }Wnt t fj o }qlnX|dj o|i|ƒqlqlWxD|D]<}y-ti|ƒ}|o |i}nd}Wnttfj o qÉnX|idƒo:tii|d ƒo#tti|d ƒi|ƒ}nS|idƒoBtii|d dƒo'tti|d dƒi|ƒ}n|ii|ƒp||i|R?t__doc__R(((s2/usr/lib/python2.6/site-packages/paste/reloader.pyRBs (RCRRRRR tpaste.util.classinstanceRR tobjectRtplatformt startswitht_systemrestartRAR&RBR9R<(((s2/usr/lib/python2.6/site-packages/paste/reloader.pyt)s       W