I'm using the web2py shell mode to run a background process, let's call it toplevel.py, that waits on pipe for incoming data, processes, and stores it in the db. Works beautifully. Even supports forking a child process that monitors the db and sends periodic reports and alerts by email to a system maintainer.
I figured out that I can import submodules that access the db if toplevel.py does import submodule submodule.db = db Works fine in shell mode, but there are functions in toplevel.py that I'd like to test in a separate ordinary instance of web2py. When I define, in a controller, a test function like this, def testDailyReport(): import toplevel toplevel.db = db toplevel.sendDailyReport() it fails on the import line because "db" isn't defined when it tries to set submodule.db. My attempt to do this with "toplevel.db = db" obviously can't work because the NameError occurs before the import statement returns. What's the right way to import my toplevel script in a controller? I'm using web2py 1.97 and my toplevel.py and submodule.py are in web2py/site-packages. Thanks, Mike