psycopg 文档状态:“Psycopg 连接不是绿色线程安全的,不能由不同的绿色线程同时使用。尝试在每个线程使用一个游标同时执行多个命令将导致错误(或2.4.2 之前的版本死锁)。 因此,建议程序员要么避免在协程之间共享连接,要么使用库友好的锁来同步共享连接,例如用于汇集。”
我找不到绿色线程安全的池实现 - 有吗?
最佳答案
我假设你知道 gevent-psycopg2模块,它使 psycopg
对 greenlet 友好。
寻找连接池解决方案我已经尝试了 2 种解决方案:
<SQLALchemy
- 它似乎可以与 monkey-patched 线程和gevent-psycopg2
一起正常工作。QueuePool
类在内部使用threading
模块进行锁定,因此需要猴子补丁,即使gevent-psycopg2
使psycopg2
变绿。有一个
psycopg2
connection pooling example在gevent
示例中
我已经尝试过这两种解决方案,但没有在生产负载下尝试过 - 所以我还不能说它们的稳健性。
关于python - 如何使用 psycopg 和 gevent 合并连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12650048/