making sqlalchemy work with twisted (was Re: [Twisted-Python]SQL Abstraction Layer_

Paul G paul-lists at perforge.com
Wed Jan 18 19:31:20 EST 2006


----- Original Message ----- 
From: "Jean-Paul Calderone" <exarkun at divmod.com>
To: "Twisted general discussion" <twisted-python at twistedmatrix.com>
Sent: Wednesday, January 18, 2006 7:10 PM
Subject: Re: making sqlalchemy work with twisted (was Re: 
[Twisted-Python]SQL Abstraction Layer_


> On Wed, 18 Jan 2006 18:25:17 -0500, Paul G <paul-lists at perforge.com> 
> wrote:
>>
>>to me, integrating sqlalchemy into twisted would ideally work in a way 
>>where all sqlalchemy api access is async. as i stated in my original mail, 
>>i currently believe that this could be possible to achieve by making all 
>>of sqlalchemy's calls into the dbapi module async with deferToThread(). if 
>>one does this, and it doesn't break something arcane in sqlalchemy, we 
>>shouldn't have to worry about deferreds in the client code. is there a 
>>reason why this wouldn't work or why it shouldn't be done that i am 
>>missing?
>
> I think you are missing the fact that if you do this, attribute access 
> will result in a Deferred, not the value of the attribute from the 
> database, which is not available yet.
> So client code will have to deal with Deferreds, and in an extremely 
> unusual manner - every attribute lookup will return a new Deferred.

this would be very much like the 'future' in the actor-based concurrency 
model, so nothing terribly unusual. however, no, this is not what i want to 
do. maybe my (bad) ascii art will help:

normal: attribute access -> sqlalchemy accessor -> sqlalchemy sqlengine -> 
synchronous db query to dbapi -> return to sqlengine -> return to 
accessor -> return attribute

new: attribute access -> sqlalchemy accessor -> sqlalchemy sqlengine -> 
async call into dbapi with deferToThread-> control returned to reactor -> 
another coop thread gets control

... async dbapi result handler ->  return to sqlengine -> return to 
accessor -> return attribute

did i explain what i mean well?

-p 





More information about the Twisted-Python mailing list