在SQLAlchemy中使用eventlet
2 个回答
8
OpenStack的计算项目(Nova)使用了SQLAlchemy和eventlet,如果你感兴趣的话,可以看看他们的方法。
5
抱歉回复晚了。
这主要取决于你使用的数据库连接库。
- 如果你用的是C扩展库,比如MySQLdb,Eventlet有一个叫做db_pool的模块,像在OpenStack示例中使用的那样。简单来说,它会创建一个操作系统线程池来执行阻塞的数据库操作。所以你不能同时进行很多查询,但大多数情况下,你的数据库也承受不了那么多查询,所以这不是个大问题。
- 如果你用的是纯Python库,比如myconnpy或pg8000,那你只需要调用
eventlet.monkey_patch()
就可以了。 - 作为一个特殊情况,Eventlet支持对psycopg2进行猴子补丁。虽然它是个C扩展,但它非常棒,提供了IO钩子,所以你可以享受到两者的优点。再次,只需简单调用
monkey_patch()
就能解决问题。