我希望龙卷风支持异步 sql 数据库操作,在我阅读了源代码之后,
http://www.tornadoweb.org/documentation/_modules/tornado/database.html#Connection
叹息,他们正在阻止版本。这里有一些选择。
计划A:找到一组类似于mysqldb模块的api,除了他们使用回调来返回reuslt.sorry我没有找到一个显示他们的api可以处理非阻塞mysql操作的例子
B方案:使用block版本。听说tornado的作者建议开发者使用block版本,并且极大的优化你的sql查询以缩短阻塞周期。
在我的情况下:服务器需要在高峰时段每秒处理接收 2k 请求,其中大多数需要从数据库查询和更新,建议每个操作需要 10 毫秒,10 毫秒 * 2k 超过 20 秒,那将是一场噩梦。在多线程编程中至少我可以建立更多的连接以获得更多的平均响应时间。
也许我在这里错过了一些观点,我对后端开发没有太多经验。但是我仍然认为使用阻塞 io api 是一个糟糕的想法,而框架是非阻塞的。
方案C:放弃MySql 使用mongoDB,听说mongoDB 有一个异步Python 实现api 叫asyncmongo,但我不确定学习mongoDB 的风险,将mongoDB 作为我们的业务选择