https://github.com/zhu327/greentor
在 demo 目录下有一个调用 pymysql 的例子,看似与同步调用没什么区别,也没用用 yield ,实际上在通过打补丁的形式使用 Tornado 的 IOStream 替换掉了 pymyslq 的 socket ,并且使用 greenlet 中断当前的同步调用,在 IOStream 回调的时候唤醒 greenlet 继续执行。
思路来自于gTronado
关键的实现逻辑参考这篇文章:
https://emptysqua.re/blog/motor-internals-how-i-asynchronized-a-synchronous-library/