2012-08-09 3 views

Antwort

9

PgBouncer ist ziemlich ordentlich und transparent für die Anwendung und den Server.

Wir verwenden PgBouncer seit 2 Jahren in der Produktion ohne ein einziges Problem. Es ist ein ziemlich toller PostgreSQL Connection Pooler.

http://wiki.postgresql.org/wiki/PgBouncer

1

Ich denke Connection Pooling ist die beste Sache zu tun, wenn diese Anwendung mehrere Clients und gleichzeitig dienen soll.

2

Die Antwort hängt davon ab, wie viele solche Anfragen passieren wird und wie viele gleichzeitig in Ihrem Web-App? Verbindungspooling ist normalerweise eine bessere Idee, wenn Sie erwarten, dass Ihre Webanwendung mit 100 oder sogar 1000 gleichzeitig angemeldeten Benutzern beschäftigt ist. Wenn Sie dies nur als Nebenprojekt tun und weniger als ein paar hundert Benutzer erwarten, können Sie wahrscheinlich davonkommen ohne Pooling.

1

Yeah Connection Pooling wird helfen, aber ja, Sie müssen die richtigen Zahlen für Live-Verbindung oder Pool-Größe, basierend auf welcher Last wird auf der Datenbank sein.

from psycopg2.pool import SimpleConnectionPool 
    from contextlib import contextmanager 

    dbConnection = "dbname='dbname' user='postgres' host='localhost' password='postgres'" 

    # pool define with 10 live connections 
    connectionpool = SimpleConnectionPool(1,10,dsn=dbConnection) 

    @contextmanager 
    def getcursor(): 
     con = connectionpool.getconn() 
     try: 
      yield con.cursor() 
     finally: 
      connectionpool.putconn(con) 

    def main_work(): 
     try: 
      # with here will take care of put connection when its done 
      with getcursor() as cur: 
       cur.execute("select * from \"TableName\"") 
       result_set = cur.fetchall() 

     except Exception as e: 
      print "error in executing with exception: ", e 
Verwandte Themen