Tornado宣传自己是一个“相对简单的、非阻塞式Web服务器框架”,旨在解决C10k问题。 但是,在查看他们的数据库包装器时,我遇到了以下代码:
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
据我所知,对于构建在libmysqlclient
之上的MySQLdb调用是阻塞的。
如果存在长时间运行的查询,我的理解是整个Tornado服务器将无响应直到查询完成,除非有一些神奇的代码实现了异步机制。