[Twisted-Python] OT - adbapi, connection timeouts, mysql - OT

Phil Mayers p.mayers at imperial.ac.uk
Tue Aug 25 09:25:35 MDT 2009


Phil Christensen wrote:
> On Aug 24, 2009, at 9:14 PM, Garret Heaton wrote:
>> On Mon, Aug 24, 2009 at 3:53 PM, Phil Christensen <phil at bubblehouse.org 
>>> wrote:
>>> I feel like I can think of any number of ways running the same  
>>> series of queries twice would be a bad thing. I have some very  
>>> important queries that are run inside a interaction because they do  
>>> a series of operations in sequence. I can't use transactions  
>>> because my tables are MyISAM.
>>>
>>> Perhaps I'm jumping at shadows, but automatic re-querying just  
>>> seems dangerous to me. Only the particular application knows when  
>>> it's safe.
>> This is very true, and I should have mentioned it in my reply. Re- 
>> running queries is only possible when you know your application can  
>> do it safely.
>>
>> How would you solve the issue of a lost connection in your case?
> 
> Honestly, I have never actually solved it. I pretty much only write  
> webapps these days, so when a ConnectionLost happens, it just  
> propagates up the stack and displays an error to the user. Not ideal,  
> by any means.

It's hard to apply in the general case, but I like the way Zope handles 
this using the per-request transaction machinery.

Basically, if any processing generates a "retry"able exception, all 
transactions attached to the request are rolled back and the entire 
request re-submitted.

This works really, really well for HTML<->SQL CRUD apps.

I can't see how Twisted could support that currently, given the 
deferToThread == 1 transaction nature of adbapi.




More information about the Twisted-Python mailing list