[Zope] conflicts, sessions,
and programming best practices guidelines
Chris McDonough
chrism at plope.com
Tue Nov 15 18:48:22 EST 2005
On Nov 15, 2005, at 5:54 PM, Dennis Allison wrote:
>
> Has anyone prepared a set of best practice guidelines on the
> techniques to
> use to minimize conflicts?
>
> It is becoming clear that we need to do to refactor some of our
> code to
> get us out of our current conflict pickle.
>
> A quick google produced lots of commentary but nothing I could hand
> to our
> programmers as guidelines.
Nothing in general except the (probably too general) "attempt not to
allow one process/thread to write to the same object at the same time
as another process/thread".
One tip, since you've told us you use sessions heavily: using ZEO to
back your session database provides more opportunity for conflicts
than if you used a "normal" Zope storage. This is because:
- the opportunity for conflict naturally grows as transaction time
increases and using a ZEO storage rather than a local storage adds
latency to the total transaction time that would not otherwise exist.
- you have "n" processes attempting to write to essentially the same
objects at the same time when you use a shared ZEO sessioning
database. If these were instead local databases, each process would
only compete "with itself" (between all of its threads).
I tend to try to use local sessioning databases backed by tempstorage
plus a frontend load balancer that allows for cookie-based session
affinity (Pound).
- C
More information about the Zope
mailing list