[Twisted-Python] laxdb - an async dbapi wrapper

Matt Goodall matt at pollenation.net
Wed Aug 31 10:34:38 EDT 2005



Itamar Shtull-Trauring wrote:

>On Wed, 2005-08-31 at 13:31 +0100, Matt Goodall wrote:
>
>  
>
>>A while back, I started messing around with making a standard, blocking
>>db-api module appear non-blocking but with a deferred API. I called it
>>laxdb and it's in my sandbox.
>>
>>  svn://svn.twistedmatrix.com/svn/Twisted/sandbox/mg/laxdb.py
>>  http://svn.twistedmatrix.com/cvs/sandbox/mg/laxdb.py?view=markup
>>    
>>
>
>I get the impression from your example:
>
>    def connected(conn):
>        curs = conn.cursor()
>        d = curs.execute("select * from test")
>        d.addCallback(lambda ignore: curs.fetchall())
>        d.addCallback(lambda rows: pprint(rows))
>        # ...
>
>that you keep dispatching to a thread, then passing it back to Twisted
>thread, repeatedly, unlike runInteraction which only does this once. I
>would guess that this will slow down complex database interactions
>somewhat.
>
Yep, I'm sure it will although I don't know how bad the effect is
because I have done no timing tests. Has anyone else investigated this
sort of issue before?

There is actually a comment in the module's docstring about the use of
threads:

  "The amount of thread context switching may hurt laxdb performance."

- Matt

-- 
     __
    /  \__     Matt Goodall, Pollenation Internet Ltd
    \__/  \    w: http://www.pollenation.net
  __/  \__/    e: matt at pollenation.net
 /  \__/  \    t: +44 (0)113 2252500
 \__/  \__/
 /  \          Any views expressed are my own and do not necessarily
 \__/          reflect the views of my employer.





More information about the Twisted-Python mailing list