2009-12-13 5 views
11

Ho esaminato server non bloccanti per python (tornado, twistato ecc.) Ma molti vantaggi sembrano essere persi se non c'è una connessione non bloccante al database. Qualcuno sa se ci sono progetti che si occupano di questo? (Da non-blocking alla node.js)Qualcuno sa di una lib di mysql asincrona per python?

Edit: Chiarito mia domanda

risposta

1

Il modo di fare che è di deposizione delle uova le query di database in un thread separato. Con Twisted è possibile utilizzare deferToThread() o deferToThreadPool() (consultare i documenti API 1).

+2

Inoltre, twisted.enterprise.adbapi fornisce un'API DB-API-like sopra a 'deferToThreadPool', in particolare per facilitare l'accesso a MySQL e ad altri rdbms in un'applicazione basata su Twisted. –

13

È possibile utilizzare Twisted's ADBAPI per eseguire il wrapping di un'implementazione DBABI sincrona.

Es .:

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

controllare la nostra nuova txMySQL project che può farlo ora.

Questa è un'implementazione asincrona nativa del protocollo binario MySQL.