Ist Tornado wirklich blockierungsfrei?
Tornado wirbt selbst als "ein relativ einfaches, nicht blockierend web server framework "und wurde entwickelt, um das C10k-Problem zu lösen. Als ich jedoch den Datenbank-Wrapper betrachtete, der MySQLdb umschließt, stieß ich auf folgenden Code:
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
Soweit ich weiß, ruft MySQLdb auf, das auf @ aufbaulibmysqlclient
, sind blockiert.
Habe ich recht, wenn ich daran denke, dass eine lang andauernde Abfrage den gesamten Tornado-Server so lange nicht mehr reagiert, bis er fertig ist, oder ob der Code magisch ist?