[Zope3-dev] Re: using utilities/sites from threads in zope3

Tres Seaver tseaver at palladion.com
Fri Jun 29 08:54:31 EDT 2007


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Tim Stebbing wrote:
> G'day,
> 
> I've recently ran into a bit of a problem attempting to use threads in
> zope 3.2.1, hooks.getSite() returns None, and any attempt to get a
> utility results in a component lookup error within my threads.
> 
> I've attempted to pass a site into a thread and set it with
> hooks.setSite() but this is apparently not the way to go, I get the
> feeling that a thread that needs access to things form the database
> probably needs its own connection, context etc.

Your worker thread almost certainly needs its own database
connection(s):  applicaiton code typically relies on the isolation
provided by connection-per-thread, which means that it is not "safe" in
general to share persistent objects between threads.

Assuming that you do grab a connection and get its root object, you
should then be able to traverse to your friendly local site manager,
calling 'setSite' at *each* parent site manager you pass along the way.

> I'm aware of ITask's but unsure if developers are supposed to use them
> for their own purposes? Do these handle setting up of contexts like
> db, site, global utils etc? I've googled around a fair bit and been
> over all the z3 doco, it would be great if there was a simple howto on
> setting up a thread that would have the usual access to various
> components.


Tres.
- --
===================================================================
Tres Seaver          +1 540-429-0999          tseaver at palladion.com
Palladion Software   "Excellence by Design"    http://palladion.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFGhQEG+gerLs4ltQ4RAh6EAJ9DzBW20NPz4tAE3BydJ789Vokx0wCg2qMp
yBB8XemrjD7dXPwwwz4y9Yo=
=+iwh
-----END PGP SIGNATURE-----



More information about the Zope3-dev mailing list