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.

上一篇:如何在python中使用基于gevent的程序中的mysql?


下一篇:开发基于Django和Websocket的堡垒机