[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