[Twisted-Python] using Twisted with postgresql

Manlio Perillo manlio_perillo at libero.it
Tue Oct 16 06:07:07 EDT 2007


Doris Lam ha scritto:
> Hi,
> 
> I'm new to Twisted and is currently looking for a way to asynchronously 
> do queries to a postgres database. From what I've seen it looks like 
> there's a project called pgasync (http://jamwt.com/pgasync/) that does 
> this, or I can use Twisted's adbapi and some other synchronous module. 

Some time ago, I have refactored the pgasync implementation in pglib:
http://hg.mperillo.ath.cx/twisted/pglib/

It offers an API for almost all the functionality of the Posgres protocol.
The only thing missing is a connection pool manager, and support for 
prepared queries.

> I'm wondering if anyone has used pgasync and how it compares to using 
> adbapi and threads? From the pgasync site it seems the last update was 
> in 2005, so I'm not sure if anyone's still maintaining it. If using 
> adbapi's better, can I get some suggestions as to which postgres module 
> I should use? So far I've seen pyPgSQL and psychopg that're both DB API 
> 2 compliant. Any help will be appreciated!
> 

A pure asynchronous implementation has better performance, in theory, 
since you don't need to use thread locks.

Moreover, pglib can be very useful, as an example, if you want to 
"consume" each row at a time, or if you want to listen for database 
notifications.

However using libpq has many advantages.
You can also use the asynchronous interface that psycopg2 implements:
http://www.initd.org/svn/psycopg/psycopg2/trunk/doc/async.txt

However you *need* a good connection pool manager for asynchronous 
connections, and, as far as I know, no one has yet written such a thing.

I'm interested in this topic, since I'm writing a WSGI implementation 
for Nginx and it, like Twisted, is asynchronous (and *without* threads 
support):
http://hg.mperillo.ath.cx/nginx/mod_wsgi/



Regards  Manlio Perillo




More information about the Twisted-Python mailing list