2009-12-13 28 views
11

Tôi đã xem xét các máy chủ không chặn cho python (lốc xoáy, xoắn ...) nhưng rất nhiều lợi ích dường như bị mất nếu không có kết nối không chặn đến cơ sở dữ liệu. Có ai biết nếu có bất kỳ dự án mà chăm sóc này? (Bởi non-blocking một Node.js la)Có ai biết về một lib mysql không đồng bộ cho python không?

Edit: làm rõ câu hỏi của tôi

Trả lời

1

Cách bạn làm điều đó là bởi đẻ truy vấn cơ sở dữ liệu trong một thread riêng biệt. Với Twisted bạn có thể sử dụng deferToThread() hoặc deferToThreadPool() (xem tài liệu API 1).

+2

Ngoài ra, twisted.enterprise.adbapi cung cấp API giống như API DB trên đầu trang 'deferToThreadPool' cụ thể để giúp dễ dàng truy cập vào MySQL và các rdbms khác trong ứng dụng dựa trên Twisted. –

13

Bạn có thể sử dụng Twisted's ADBAPI để bọc triển khai DBAPI đồng bộ.

ví dụ .:

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

Kiểm tra của chúng tôi mới txMySQL project mà có thể làm điều này ngay bây giờ.

Đây là triển khai không đồng bộ gốc của giao thức nhị phân MySQL.

Các vấn đề liên quan