<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Transaction Management in Django</title>
	<atom:link href="http://blogs.gnome.org/jamesh/2008/09/01/transaction-management-in-django/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.gnome.org/jamesh/2008/09/01/transaction-management-in-django/</link>
	<description>Random stuff</description>
	<lastBuildDate>Wed, 28 Oct 2009 02:53:32 +0800</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: James Henstridge</title>
		<link>http://blogs.gnome.org/jamesh/2008/09/01/transaction-management-in-django/comment-page-1/#comment-725</link>
		<dc:creator>James Henstridge</dc:creator>
		<pubDate>Mon, 08 Sep 2008 07:57:40 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.gnome.org/jamesh/2008/09/01/transaction-management-in-django/#comment-725</guid>
		<description>The problem is with enter_transaction_managemnt/leave_transaction_management nesting rather than with the individual decorators or the middleware class.

My contention is that if you&#039;re in managed transaction mode and call enter_transaction_management(), it should not be possible to end the transaction until after calling leave_transaction_management() since doing so will split the transaction that was being managed.  So @commit_manually has the same problems as the other decorators.

Concentrating on the database side of things, an equivalent of Zope&#039;s transaction.doom() might be enough.  If you&#039;ve got code that has side effects outside of the database transaction, you need a way for that code to participate in the transaction commit/rollback (one example is sending out an email related to some DB changes).  At that point you&#039;ve essentially got Zope&#039;s transaction manager and may as well reuse that code directly.</description>
		<content:encoded><![CDATA[<p>The problem is with enter_transaction_managemnt/leave_transaction_management nesting rather than with the individual decorators or the middleware class.</p>
<p>My contention is that if you&#8217;re in managed transaction mode and call enter_transaction_management(), it should not be possible to end the transaction until after calling leave_transaction_management() since doing so will split the transaction that was being managed.  So @commit_manually has the same problems as the other decorators.</p>
<p>Concentrating on the database side of things, an equivalent of Zope&#8217;s transaction.doom() might be enough.  If you&#8217;ve got code that has side effects outside of the database transaction, you need a way for that code to participate in the transaction commit/rollback (one example is sending out an email related to some DB changes).  At that point you&#8217;ve essentially got Zope&#8217;s transaction manager and may as well reuse that code directly.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bob Haugen</title>
		<link>http://blogs.gnome.org/jamesh/2008/09/01/transaction-management-in-django/comment-page-1/#comment-724</link>
		<dc:creator>Bob Haugen</dc:creator>
		<pubDate>Mon, 08 Sep 2008 05:16:58 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.gnome.org/jamesh/2008/09/01/transaction-management-in-django/#comment-724</guid>
		<description>What (if anything) do you think is wrong with Django&#039;s @transaction.commit_manually decorator?

If anything, would you please post a sample of the code you use to wrap transactions for managed transaction mode?</description>
		<content:encoded><![CDATA[<p>What (if anything) do you think is wrong with Django&#8217;s @transaction.commit_manually decorator?</p>
<p>If anything, would you please post a sample of the code you use to wrap transactions for managed transaction mode?</p>
]]></content:encoded>
	</item>
</channel>
</rss>
