Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用psycopg和gevent共享连接?_Python_Postgresql_Asynchronous_Gevent_Psycopg - Fatal编程技术网

Python 如何使用psycopg和gevent共享连接?

Python 如何使用psycopg和gevent共享连接?,python,postgresql,asynchronous,gevent,psycopg,Python,Postgresql,Asynchronous,Gevent,Psycopg,psycopg文档声明:“psycopg连接不是绿色线程安全的,不能由不同的绿色线程同时使用。尝试在一个线程中使用一个游标同时执行多个命令将导致错误(或在2.4.2之前的版本上出现死锁)。 因此,建议程序员避免在协同程序之间共享连接,或者使用库友好型锁来同步共享连接,例如用于池。” 我找不到一个绿色线程安全的池实现——有没有?这里有一个很好的池(不仅是示例,而且在生产中使用):我假设您知道这个模块,它使psycopggreenlet变得友好 寻找连接池解决方案我尝试了两种解决方案: SQLAL

psycopg文档声明:“psycopg连接不是绿色线程安全的,不能由不同的绿色线程同时使用。尝试在一个线程中使用一个游标同时执行多个命令将导致错误(或在2.4.2之前的版本上出现死锁)。 因此,建议程序员避免在协同程序之间共享连接,或者使用库友好型锁来同步共享连接,例如用于池。”

我找不到一个绿色线程安全的池实现——有没有?

这里有一个很好的池(不仅是示例,而且在生产中使用):

我假设您知道这个模块,它使
psycopg
greenlet变得友好

寻找连接池解决方案我尝试了两种解决方案:

  • SQLALchemy
    -它似乎可以正常使用猴子补丁线程和
    gevent-psycopg2
    。该类在内部使用
    线程
    模块进行锁定,因此需要进行猴子补丁,即使
    gevent-psycopg2
    使
    psycopg2
    变为绿色

  • gevent
    示例中有一个
    psycopg2


我已经尝试了这两种解决方案,但并没有在生产负载时使用,所以我还不能说它们的健壮性。

如果调用
gevent.monkey.patch\u thread()
您应该能够使用
psycopg2.pool.ThreadedConnectionPool

  • 文件:
  • 资料来源:

最后使用了gevent docsupdate链接到psycopg2 gevent示例中的连接池示例:更新:此库已声明为“obselete”,支持:是否可以将其与sqlalchemy一起使用?是否正确?这不是针对多线程而不是gevent“绿色”线程吗?