1. Daniele Varrazzo
  2. psycogreen-hg


Clone wiki

psycogreen-hg / Home

Coroutine support for Psycopg

Starting from 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.

In this project there are wait callback implementations for a few coroutine libraries: they are licensed in order to allow their inclusion in the library.


Eventlet supports 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 psyco_gevent.py 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.