2009-12-13 12 views
11

He estado buscando en servidores sin bloqueo para python (tornado, retorcido, etc.) pero parece que se perderán muchos de los beneficios si no hay una conexión sin bloqueo a la base de datos. ¿Alguien sabe si hay algún proyecto que se encargue de esto? (Por no bloqueante A la Node.js)¿Alguien sabe de una biblioteca mysql asíncrona para python?

Editar: Se ha aclarado mi pregunta

Respuesta

1

La forma de hacerlo es mediante el desove consultas de bases de datos en un hilo separado. Con Twisted puede usar deferToThread() o deferToThreadPool() (consulte los documentos API 1).

+2

Además, twisted.enterprise.adbapi proporciona una API tipo DB-API sobre 'deferToThreadPool' específicamente para facilitar el acceso a MySQL y otros rdbms en una aplicación basada en Twisted. –

13

Puede usar Twisted's ADBAPI para envolver una implementación DBAPI sincrónica.

ej .:

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() 
4

visita nuestra nueva txMySQL project que puede hacer esto ahora.

Esta es una implementación asincrónica nativa del protocolo binario MySQL.

Cuestiones relacionadas