python – 用于Stream Server的数据库连接池的Gevent

我正在使用Python Gevent的流服务器与另一台发送并发TCP / IP请求的机器(远程)进行通信(平均每秒60请求).此通信的性质主要是IO绑定(短文本然后是音频流).我打算使用Postgresql来存储每个通信的结果(例如:从远程服务器接收的文件名).

我认为为Streamserver中生成的每个greenlet调用一个新的db连接是个坏主意(池大小为90,因此最大值为90 req / sec,即我期望的最大值和平均60 req / sec).是否可以使数据库连接池可以排队,并且每个greenlet在开始运行处理程序函数时从池中获取数据库连接?有没有适用于生产系统的教程?你会怎么建议?我在Ubuntu 10.04 64bit上使用gevent 0.13.8和postgres 9.1和Python 2.7.3.

解决方法:

应用程序池中的替代方法是使用PgBouncer进行池化.您仍然需要TCP连接和一点点设置的开销,但大大低于创建全新的PostgreSQL会话.

与应用程序内池不同,PgBouncer可以作为PostgreSQL和池之间的中介透明地引入现有系统.只需将PostgreSQl移动到端口5433并让PgBouncer侦听端口5432.

相关文章

文章浏览阅读601次。Oracle的数据导入导出是一项基本的技能,...
文章浏览阅读553次。开头还是介绍一下群,如果感兴趣polardb...
文章浏览阅读3.5k次,点赞3次,收藏7次。折腾了两个小时多才...
文章浏览阅读2.7k次。JSON 代表 JavaScript Object Notation...
文章浏览阅读2.9k次,点赞2次,收藏6次。navicat 连接postgr...
文章浏览阅读1.4k次。postgre进阶sql,包含分组排序、JSON解...