Python 如何使用psycopg和gevent共享连接?
psycopg文档声明:“psycopg连接不是绿色线程安全的,不能由不同的绿色线程同时使用。尝试在一个线程中使用一个游标同时执行多个命令将导致错误(或在2.4.2之前的版本上出现死锁)。 因此,建议程序员避免在协同程序之间共享连接,或者使用库友好型锁来同步共享连接,例如用于池。” 我找不到一个绿色线程安全的池实现——有没有?这里有一个很好的池(不仅是示例,而且在生产中使用):我假设您知道这个模块,它使Python 如何使用psycopg和gevent共享连接?,python,postgresql,asynchronous,gevent,psycopg,Python,Postgresql,Asynchronous,Gevent,Psycopg,psycopg文档声明:“psycopg连接不是绿色线程安全的,不能由不同的绿色线程同时使用。尝试在一个线程中使用一个游标同时执行多个命令将导致错误(或在2.4.2之前的版本上出现死锁)。 因此,建议程序员避免在协同程序之间共享连接,或者使用库友好型锁来同步共享连接,例如用于池。” 我找不到一个绿色线程安全的池实现——有没有?这里有一个很好的池(不仅是示例,而且在生产中使用):我假设您知道这个模块,它使psycopggreenlet变得友好 寻找连接池解决方案我尝试了两种解决方案: SQLAL
psycopg
greenlet变得友好
寻找连接池解决方案我尝试了两种解决方案:
-它似乎可以正常使用猴子补丁线程和SQLALchemy
。该类在内部使用gevent-psycopg2
模块进行锁定,因此需要进行猴子补丁,即使线程
使gevent-psycopg2
变为绿色psycopg2
- 在
示例中有一个gevent
psycopg2
我已经尝试了这两种解决方案,但并没有在生产负载时使用,所以我还不能说它们的健壮性。如果调用
gevent.monkey.patch\u thread()
您应该能够使用psycopg2.pool.ThreadedConnectionPool
- 文件:
- 资料来源: