----- Original Message ----- From: "Sean Hastings" <whysean@softhome.net>
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.
An ugly solution: Create a variable (property field) on a temporary folder (contents stored in memory). When you send an email have the emailer routine load a unique identifier into the variable. In subsequent emails, check the contents of the variable before sending the email. As I said, 'ugly', but it should work! HTH Jonathan