| Graham Dumpleton (JIRA) 2006-08-12, 7:13 am |
| [ http://issues.apache.org/jira/brows...HON-54?page=all ]
Graham Dumpleton resolved MODPYTHON-54.
---------------------------------------
Resolution: Fixed
Resolved by new module importer for 3.3, but for 3.3 release looks like the new importer will have to be enabled explicitly as will not be the default.
With the new importer, the existing apache.import_module() function should be used as mod_python.publisher will also use that itself and thus all modules are loaded via the same module caching system.
> Add a way to import a published page into another published page
> ----------------------------------------------------------------
>
> Key: MODPYTHON-54
> URL: http://issues.apache.org/jira/browse/MODPYTHON-54
> Project: mod_python
> Issue Type: Improvement
> Components: importer
> Affects Versions: 3.2.7
> Reporter: Nicolas Lehuen
> Assigned To: Graham Dumpleton
> Fix For: 3.3
>
>
> Before mod_python 3.2, standard Python modules and published modules could be imported the same way, using apache.import_module. This had a number of disadvantages, leading to MODPYTHON-8, MODPYTHON-9, MODPYTHON-10, MODPYTHON-11 and MODPYTHON-12.
> All these bugs were fixed by separating the published modules from the standard Python module. apache.import_module can still be used to import standard modules, but published modules are now fully managed by mod_python.publisher, and are not inserted
into sys.modules.
> The problem is that there is a use case of importing a published module from another published module :
> /index.py----------------
> def index(req):
> return "Hello, world !"
> def utility_function(foobar):
> return foobar+1
> /other.py----------------
> import os
> directory = os.path.split(__file__)[0]
> other_index = apache.import_module("index",path=[directory])
> def index(req):
> return "%s %i"%(other_index.index(req),other_index.utility_function(2004))
> This was alread a bit of a hack in 3.1.4, but in 3.2 it does not really work the expected way since the imported module (other_index in the example) is not the same module as the one the publisher would use to publish /index.py. This could be troublesom
e if the developer wanted to share some data between the modules, e.g. a cache or a connection pool, but not if he only wanted to share some code.
> Therefore, we need to provide a clean API in mod_python.publisher to allow developers to reference another published module.
|