|
Jim Gallacher
jg.lists at sympatico.ca
Thu Sep 15 00:09:35 EDT 2005
Jorey Bump wrote:
> Jorey Bump wrote:
>
>> Jim Gallacher wrote:
>>
>>> I don't know if this is the correct way, but I tried it and it works:
>>>
>>> import sys
>>> mpglobal = sys.modules['mpglobal']
>>>
>>> def index(req):
>>> req.write('Hello world\n')
>>> req.write(mpglobal.foo)
>>
>>
>>
>> That's very interesting, because due to module caching, the results
>> are the same if you simply do this:
>>
>> import mpglobal
>>
>> In the published module, when mpglobal is imported, /tmp/atest isn't
>> updated and mpglobal.foo is available, indicating that one could
>> initialize a db connection or variables using PythonImport, yet ensure
>> the module will still work if sys.modules['mpglobal'] isn't available.
>
>
> OK, this allows for a simpler test:
>
> # mpglobal.py
> # import this with PythonImport
> import time
> foo = time.strftime('%X %x %Z')
>
> Published module:
>
> # globaltest.py
> # access global module without reimporting, due to module caching
> import mpglobal
> def index():
> return mpglobal.foo
>
> Visit:
>
> http://host/somedir/globaltest/
>
> This will display the time the module was originally imported. Due to
> module caching, the same time will be displayed for multiple requests,
> but eventually the module will be reimported as new child processes
> begin, and different times will be displayed (use multiple browsers to
> see the effect best). This is consistent with the documentation.
>
> As far as I can tell, PythonImport doesn't provide any more persistence
> for dynamically created objects or globals than simply importing the
> module directly in a published module. The documentation implies that
> this directive is mainly useful for initializing time consuming tasks
> before the first request. But isn't that only true directly after
> (re)starting apache? Isn't it the case that subsequent requests cause
> apache to spawn more children, thus reintroducing the delay for the
> first request in that child process?
I think this is all true. You don't gain much by using it, especially
for mpm-prefork.
Jim
|