Tornado 标榜自己是“一个相对简单的、非阻塞的Web 服务器框架”,旨在解决 C10k 问题。但是,查看他们包装 MySQLdb 的数据库包装器时,我遇到了以下代码:
def _execute(self, cursor, query, parameters):
try:
return cursor.execute(query, parameters)
except OperationalError:
logging.error("Error connecting to MySQL on %s", self.host)
self.close()
raise
据我所知,对建立在 之上的 MySQLdb 的调用libmysqlclient
是阻塞的。
我是否认为长时间运行的查询会导致整个 Tornado 服务器在完成之前无响应,或者代码中有魔法吗?