On Wed, 2012-03-28 at 14:21 -0400, Jim Fulton wrote: > On Wed, Mar 28, 2012 at 2:11 PM, Zvezdan Petkovic <zvez...@computer.org> > wrote: > ... > > Thanks for chiming in Zvezdan. I was hoping you would. :) > > We should fix this if we can. If I could do over, I'd have a different > API that uses a function rather than a block and was designed to work > as a decorator. Something like: > > @transaction.job > def doit(tx): > ... > > where doit would, hopefully, be descriptive. > > You's also be able to: > > @transaction.job(retry_limit=5) > def doit(tx): > ... > > As a bonus, I'd automatically set a transaction note with the function > name or first line of doc string, and the retry #. > > I do plan to do this, um, when I get around to it. Might be a nice > small project for someone who wants to contribute. > > The with statement is really wanting when you might want to execute > code other than once.
A decorator for running some code in the context of a txn and retrying retryable exceptions would be nice higher level behavior. I'd be willing to do this work over this weekend. In the meantime, I think the existing attempts context manager still needs the small fix I proposed in my original message. Can you confirm that my understanding of the its intent seems roughly correct? - C _______________________________________________ For more information about ZODB, see http://zodb.org/ ZODB-Dev mailing list - ZODB-Dev@zope.org https://mail.zope.org/mailman/listinfo/zodb-dev