Psycogreen and Peewee 
psycogreen is just settings a wait callback, so yeah it should be fine to use that instead.
Following gevent, psycogreen and peewee, what is the difference btw:

```
import gevent
import gevent.monkey
gevent.monkey.patch_all()

import psycogreen.gevent
psycogreen.gevent.patch_psycopg()
```
this:
```
from gevent.socket import wait_read, wait_write
from psycopg2 import extensions

# Call this function after monkey-patching socket (etc).
def patch_psycopg2():
    extensions.set_wait_callback(_psycopg2_gevent_callback)

def _psycopg2_gevent_callback(conn, timeout=None):
    while True:
        state = conn.poll()
        if state == extensions.POLL_OK:
            break
        elif state == extensions.POLL_READ:
            wait_read(conn.fileno(), timeout=timeout)
        elif state == extensions.POLL_WRITE:
            wait_write(conn.fileno(), timeout=timeout)
        else:
            raise ValueError('poll() returned unexpected result')
```
Ref:

- https://bitbucket.org/dvarrazzo/psycogreen/src/master/tests/test_gevent.py
- http://docs.peewee-orm.com/en/latest/peewee/database.html#async-with-gevent