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/
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.