I
infidel
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.
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.