[Zope] preventing transaction rollback
Sean Hastings
whysean at softhome.net
Sun Sep 19 03:38:26 EDT 2004
I have a section of code that I want to have run only once during a request.
It mails out some information about the request. I want only one email per
request even if a conflict occurs during the request. I am having no luck
eliminating duplicate emails. I have tried this a few different ways now,
but currently my code looks something like this:
def theFunction(self,REQUEST):
"docstring"
...do some stuff...
get_transaction().commit()
try:
...send the email...
get_transaction().commit()
except:
pass
...do some more stuff...
return self.return_page_template(REQUEST)
I thought that this try block with a commit() would isolate the send mail
code in its own transaction, and then catch any conflict exception and
ignore it. But I am still getting multiple emails per transaction when
multiple requests happen at the same time and conflicts occur.
How can I isolate a part of the code so that it can never roll back and
execute again?
--Sean
More information about the Zope
mailing list