08-12-06 12:13 PM
[ 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 b
e used as mod_python.publisher will also use that itself and thus all module
s 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 Py
thon 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 insert
ed
into sys.modules.
> The problem is that there is a use case of importing a published module fr
om 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(20
04))
> This was alread a bit of a hack in 3.1.4, but in 3.2 it does not really work the e
xpected way since the imported module (other_index in the example) is not the same m
odule as the one the publisher would use to publish /index.py. This could be trouble
som
e if the developer wanted to share some data between the modules, e.g. a cache or a connecti
on 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 develop
ers to reference another published module.
[ Post a follow-up to this message ]
|