当前位置: 首页 > 面试题库 >

如何使用psycopg和gevent合并连接?

尉迟晔
2023-03-14
问题内容

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

我找不到绿色线程安全的池的实现-那里有没有?


问题答案:

我假设您知道gevent-psycopg2模块,该模块使psycopggreenlet友好。

寻找连接池解决方案,我尝试了2个解决方案:

  • SQLALchemy-似乎可以用猴子修补的线程和正常工作gevent-psycopg2。本QueuePool类使用threading内部模块锁定,猴子修补因此,有必要,即使gevent-psycopg2psycopg2绿色。

  • psycopg2 示例中有一个连接池gevent示例

我已经尝试了两种解决方案,但没有在生产负荷下使用-因此,我还不能说它们的耐用性。



 类似资料:
  • 问题内容: 经过大量搜索和谷歌搜索后,我回到井上。我有Django 1.4,正在寻找一个不错的 工作 示例来弄清楚让Django与gevent一起工作。我喜欢Django框架,但需要它来处理长时间轮询。我已经有一个可以正常使用gevent的工作服务器,它可以处理较长的轮询请求以及通过HTTP以约10帧/秒的速度传输图像。我想使用Django中的所有优点,为这一部分提供一个框架。 那里有很多例子,但

  • psycopg 是一个 PostgreSQL 数据库的Python语言的接口。 psycopg is a PostgreSQL database adapter for the Python programming language. Its main advantages are that it supports the full Python DBAPI 2.0 and it is threa

  • 本文向大家介绍使用Pandas合并,联接和连接DataFrame,包括了使用Pandas合并,联接和连接DataFrame的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将学习使用pandas 库合并,联接和连接DataFrame 。我认为您已经熟悉数据框和熊猫库。让我们一一看这三个操作。 合并 我们有一个名为pandas.merge()的方法,该方法类似于数据库联接操作 来合并数据帧。

  • 我正在尝试根据两个数据页中共享的“别名编号”列名合并两个数据页。 以下是我所写的内容:

  • 问题内容: 我能想到的最好的是 有人可以建议更好的语法/更快的方法吗? 我的尝试: 和 编辑 发布的前两个答案突出了我的问题,所以请使用以下内容来构造: 最终结果 问题答案: 您可以从系列中构造一个数据框,然后与该数据框合并。因此,您将数据指定为值,然后将它们乘以长度,将列设置为索引,并将left_index和right_index的参数设置为True: 编辑 以下情况:要从系列中构造的df的索引

  • 在我的代码(Javascript)中,我使用了套接字。io将base64数据从代理传输到客户端,以建立视频通话功能。为此,每5秒或10秒,我将使用mediaRecorder录制视频,并将其发送到base64中的客户端,该客户端将每10秒转换为blob。 问题:所以,我想知道我可以在每10秒合并一个新的Blob,同时播放视频吗? 我已经尝试使用createObjectURL(blob),但这不起作用

  • 问题内容: 我正在使用Java套接字客户端。如果服务器仍连接到我的客户端,但是它不发送对我的消息的响应,则最终会出现读取超时异常。 在那种情况下,我想测试一下是否应该重新连接我的插座,或者只是保持插座可重复使用。 我使用这种情况: 但我似乎总是重新连接。当我记录布尔属性的值时,我看到以下内容: 已连接:true已关闭:true绑定:true 如何连接和关闭? TIA 问题答案: 该主题对此主题进行

  • Python通过yield提供了对协程的基本支持,但是不完全。而第三方的gevent为Python提供了比较完善的协程支持。 gevent是第三方库,通过greenlet实现协程,其基本思想是: 当一个greenlet遇到IO操作时,比如访问网络,就自动切换到其他的greenlet,等到IO操作完成,再在适当的时候切换回来继续执行。由于IO操作非常耗时,经常使程序处于等待状态,有了gevent为我