Hi, I have some helper code in applications/myapp/modules/site_helpers.py. I've been trying to cache the results of some of the functions there.
The current content is: from gluon.shell import exec_environment ee = exec_environment('applications/myapp/models/db.py') cache = ee.cache @cache('cached_result', time_expire = 6000, cache_model=cache.ram) def my_fun(): return "stuff" Having this I can: from applications.myapp.modules.site_helpers import * without the exec_environment magic I can't even get this import to work. Now when I call my_fun() I get an error which seems absolutely arbitrary: In [1]: from applications.myapp.modules.site_helpers import * In [2]: my_fun() --------------------------------------------------------------------------- TypeError Traceback (most recent call last) /pub/web2py/applications/myapp/models/menu.py in <module>() ----> 1 2 3 4 5 TypeError: action() takes no arguments (4 given) Tried using gluon.cache.Cache directly avoiding exec_environment but it needs a Request instance to get created (for which I again seem to need exec_environment). So would appreciate it if someone helps me with these two questions: 1. What is the recommended way to use globals like these in the modules code? I see that exec_environment can bring me the model stuff but got the impression that other things (like cache in this example) aren't that easy to get. 2. What is the penalty for using exec_environment? Can I use it freely in helper code placed in /modules (in the book I see a note in that section "While everything discussed here works fine, we recommend instead building your application using components", which am not sure is going to help me in this case)? Apologies if what I am asking is obvious. Appreciate your help...