Use MailDropHost. It ties mail delivery to the transaction system of Zope. -aj --On Sonntag, 19. September 2004 3:38 Uhr -0400 Sean Hastings <whysean@softhome.net> wrote:
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
_______________________________________________ Zope maillist - Zope@zope.org http://mail.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope-dev )