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