You will want to change time.sleep(3)
to gevent.sleep(3)
which is the way of telling the individual greenlet to sleep. From the docs:
gevent.sleep(seconds=0) Put the current greenlet to sleep for at least seconds.
seconds may be specified as an integer, or a float if fractional seconds are desired. Calling sleep with seconds of 0 is the canonical way of expressing a cooperative yield.