I'm playing with this right now.
It's working for me, here are the two things I'm observing so far.
1. it might be better to use NullPool with create_engine(), not sure yet. This eliminates all connection pooling. I'm not sure if theres's some kind of twinge with using a psycopg2 connection in a greenlet that it wasn't created in, the statement at
http://initd.org/psycopg/docs/advanced.html#support-to-coroutine-libraries doesn't seem to say this, but I am seeing it "hang" more often if I don't use NullPool.
2. then it runs great, but watching this go, I can see that there might be a greater chance of old fashioned deadlocks occurring, it's not clear yet. Try running "ps -ef | grep post" or select from pg_stat_activity to see if anything is just locking.
script is attached
with gevent I can run through about 55K rows of work in 53 seconds, with threads it takes 66 seconds.