2012-09-29 52 views
14

Trạng thái của tài liệu psycopg: "Các kết nối Psycopg không phải là chủ đề màu xanh lá cây an toàn và không thể được sử dụng đồng thời bởi các chuỗi màu xanh lá cây khác nhau. Vì vậy, các lập trình viên được khuyên nên tránh chia sẻ kết nối giữa coroutines hoặc sử dụng khóa thân thiện với thư viện để đồng bộ hóa các kết nối được chia sẻ, ví dụ như để gộp chung. "Tôi làm cách nào để có thể kết nối các kết nối bằng psycopg và gevent?

Tôi không thể tìm thấy việc triển khai nhóm có chủ đề màu xanh lá cây an toàn - có ở ngoài đó không?

Trả lời

12

Tôi giả sử bạn biết gevent-psycopg2 mô-đun, mà làm cho psycopg greenlet thân thiện.

Looking for giải pháp kết nối tổng hợp tôi đã thử 2 giải pháp:

  • SQLALchemy - nó có vẻ hoạt động đúng với chủ đề khỉ vá và gevent-psycopg2. Lớp QueuePool sử dụng mô-đun threading nội bộ để khóa, vì vậy, việc vá khỉ là cần thiết, mặc dù gevent-psycopg2 làm cho màu xanh lá cây psycopg2.

  • có một psycopg2connection pooling example trong gevent ví dụ

Tôi đã thử cả hai giải pháp, nhưng không phải ở tải sản xuất - vì vậy tôi không thể nói về mạnh mẽ của họ được nêu ra.

+0

Đã kết thúc bằng cách sử dụng ví dụ tổng hợp kết nối trong tài liệu gevent – gone

+1

Cập nhật liên kết tới ví dụ về psycopg2 gevent: https://github.com/gevent/gevent/blob/master/examples/psycopg2_pool.py –

+0

Cảm ơn bạn, tôi vừa cập nhật câu trả lời. –

0

Dưới đây là một hồ bơi tốt (không chỉ là ví dụ, nhưng được sử dụng trong sản xuất): psycopg2_pool.py

+0

là nó có thể sử dụng nó với SQLAlchemy? – Stephan

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