psycogreen / README.rst

psycogreen -- integrate psycopg2 with coroutine libraries

Since release 2.2, Psycopg offers coroutines support.

Psycopg is a C extension module, so it can't be monkey-patched to be coroutine-friendly. Instead it now exposes a hook where a coroutine library can install its wait code. Psycopg will call the hook whenever it executes a libpq call that may block. Coroutine libraries can implement their "wait callaback" in order to have a chance to schedule a coroutine switch.

The psycogreen package is a contained of callbacks to make psycopg2 work with coroutine libraries, using asynchronous calls internally but offering a blocking interface so that regular code can run unmodified.


Eventlet support Psycopg out-of-the-box: Psycopg can be patched together with the standard library: see the documentation.


A wait callback implementation for gevent is provided here: check and this test example.

uWSGI green threads

Roberto De Ioris is writing uGreen, a green thread implementation on top of the uWSGI async platform.

He has performed some tests using both psycopg2 async support and psycopg2 green support and has reported no problem in their stress tests with both the async styles.