I note that you call gevent.monkey.patch_all() in async. I'm still fairly new to gevent and I'm curious if others consider this good style for a library?
So yeah, this is suboptimal, but not the worst thing in the world. It should really be documented though.