Кто-нибудь знает о асинхронной mysql lib для python?
Я изучал неблокирующие серверы для python (торнадо, скручивание и т.д.), но многие преимущества, кажется, теряются, если нет неблокирующего соединения с базой данных. Кто-нибудь знает, есть ли какие-либо проекты, которые позаботятся об этом? (путем неблокирования a la node.js)
Изменить: Уточненный мой вопрос
Ответы
Ответ 1
Вы можете использовать Twisted ADBAPI для переноса синхронной реализации DBAPI.
например:.
from twisted.internet import reactor
from twisted.enterprise import adbapi
def result(rows):
for row in rows:
print row
reactor.stop()
def fail(err):
err.printDetailedTraceback()
reactor.stop()
pool = adbapi.ConnectionPool('sqlite3', 'animals.db')
d = pool.runQuery('SELECT * FROM animals', ())
d.addCallbacks(result, fail)
reactor.run()
Ответ 2
Ознакомьтесь с нашим новым проектом txMySQL, который может сделать это сейчас.
Это встроенная асинхронная реализация двоичного протокола MySQL.
Ответ 3
Как вы это делаете, порождая запросы к базе данных в отдельном потоке. С помощью Twisted вы можете использовать deferToThread()
или deferToThreadPool()
(см. API docs 1).