I may have found the source of my infinite loop when importing kid
modules from my cherrypy server. Here is some code from the
autoreloader module of cherrypy:
def reloader_thread():
mtimes = {}
def fileattr(m):
return getattr(m, "__file__", None)
while RUN_RELOADER:
for filename in map(fileattr, sys.modules.values()) +
reloadFiles:
if filename:
if filename.endswith(".pyc"):
filename = filename[:-1]
try:
mtime = os.stat(filename).st_mtime
except OSError:
sys.exit(3) # force reload
if filename not in mtimes:
mtimes[filename] = mtime
continue
if mtime > mtimes[filename]:
sys.exit(3) # force reload
time.sleep(1)
So what happens if one of my modules is a kid template named
'login.kid'? kid compiles the template to login.pyc, which means the
os.stat call in this function will be passed 'login.py' which does not
exist.
--
http://mail.python.org/mailman/listinfo/python-list