[Grok-dev] multiple grok wsgi applications possible?
Brandon Craig Rhodes
brandon at rhodesmill.org
Wed Dec 17 16:15:56 EST 2008
Chris McDonough <chrism at plope.com> writes:
> Brandon Craig Rhodes wrote:
>
>> I'd assumed you were just overwriting
>> `zope.component.globalregistry.globalSiteManager`...
>
> Yes, during initial registry population (e.g. xmlconfig.include(...))
> this is exactly what we do.
I'm not convinced; it looks like your code (thanks for providing the
link a moment ago! it's good reading...) does not actually touch the
global variable that I'm citing. Instead, it just touches the copy of a
function at `zope.component.getGlobalSiteManager`.
To clarify, there are three things here in play:
`zope.component.getGlobalSiteManager` - An ``import`` into the
`__init__.py` of `zope.component` that provides an easy,
fewer-character location from which to import the global site
manager function.
`zope.component.globalregistry.getGlobalSiteManager` - The actual
location at which the global site manager function lives. Since you
fail to overwrite this location, there might be parts of Zope that
import this real one instead of the `__init__.py` copy.
`zope.component.globalregistry.globalSiteManager` - The global variable
in the `globalregistry` module which `getGlobalSiteManager()` reads
in order to find the global site manager. My proposal was that you
could also overwrite this variable with a thread-local value holder
that you write to before handing control over to the Zope publisher
at the bottom of the WSGI stack, and then you'd have captured and
redefined the idea of the "global registry" regardless of how code
decided that they should get at it (whether through the
`__init__.py` copy of the function, or the deeper real copy of the
function itself, or through looking for the global variable - which,
after all, is not preceded with an underscore, so a programmer could
legitimately think he was allowed to look at and use its value...)
--
Brandon Craig Rhodes brandon at rhodesmill.org http://rhodesmill.org/brandon
More information about the Grok-dev
mailing list