11

我一直在研究 Python 的非阻塞服务器(龙卷风、扭曲等),但如果没有与数据库的非阻塞连接,很多好处似乎都会丢失。有谁知道是否有任何项目可以解决这个问题?(通过非阻塞 la node.js)

编辑:澄清了我的问题

4

3 回答 3

13

您可以使用 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()
于 2009-12-14T00:15:05.803 回答
4

查看我们现在可以执行此操作的新txMySQL 项目。

这是二进制 MySQL 协议的本机异步实现。

于 2011-02-09T17:05:54.743 回答
1

这样做的方法是在单独的线程中生成数据库查询。使用 Twisted,您可以使用deferToThread()deferToThreadPool()(请参阅 API 文档1)。

于 2009-12-13T21:58:08.970 回答