|
Graham Dumpleton
grahamd at dscpl.com.au
Wed Aug 25 13:20:03 EDT 2004
On 24/08/2004, at 9:54 AM, Gregory (Grisha) Trubetskoy wrote:
>
> On Mon, 23 Aug 2004, Tobiah wrote:
>
>>
>>> DEBUG = 1
>>> import mymodulea
>>> import mymoduleb
>>> if DEBUG:
>>> mymodulea = reload(mymodulea)
>>> mymoduleb = reload(mymoduleb)
>>> That is O.K., but still, unwieldy.
>
> This method is pretty old, now a simpler way to do it is:
>
> mymodulea = apache.import_module("mymodulea")
> mymoduleb = apache.import_module("mymoduleb")
No time right now for an extended description, will send one later, but
Vampire which I
described recently and which is available at
"http://www.dscpl.com.au/projects/vampire"
has a module caching system which has explicit module importing similar
to the
mod_python.apache module, but what it will do is track relationships
between module
imports and is able to do a reload even when child imports are changed
and not the
immediate module you are loading.
What this means is if that A imports B which imports C and similarly D
imports C, if C
is then changed, all the modules which depend on C, ie., A, B and D
will be automatically
reloaded when requested, rather than them being grabbed from the cache.
If all your
application modules are in one place and you always use the module
importer in Vampire
for importing any application module from a page, but also one
application module from
another, any change to an application module should see anything that
depends on it
automatically reloaded.
BTW, various problems I have seen with things appearing not to be
reimported correctly
are actually because of intermediate proxy servers caching stuff. Thus
need to explicitly
say not to cache stuff in response, although error pages can stuff that
up also.
--
Graham Dumpleton (grahamd at dscpl.com.au)
|