我正在開發heroku使用它們的Postgres附加Dev開發計劃,它的連接限制爲20
。我是python
的新手,這可能很簡單,但是我發現很難在不引起OperationalError: (OperationalError) FATAL: too many connections for role
的情況下抽象數據庫連接。如何減少使用SQLAlchemy + postgreSQL的連接數量?
目前我有databeam.py
:
import os
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
from settings import databaseSettings
class Db(object):
def __init__(self):
self.app = Flask(__name__)
self.app.config.from_object(__name__)
self.app.config['SQLALCHEMY_DATABASE_URI'] = os.environ.get('DATABASE_URL', databaseSettings())
self.db = SQLAlchemy(self.app)
db = Db()
,當我的頁面創建一個控制器,我這樣做:
import databeam
db = databeam.db
locations = databeam.locations
templateVars = db.db.session.query(locations).filter(locations.parent == 0).order_by(locations.order.asc()).all()
這不會產生我想要什麼,但慢慢地,並在次數導致上面提到的錯誤。由於我來自php
背景,我對如何處理數據庫連接有一定的心態(即如上面的例子),但我擔心它不適合於python
。
在一個地方抽象數據庫連接然後在所有導入中使用相同的連接的正確方法是什麼?
我知道這是一個古老的答案,但我無法找到這個細節,我想你能幫助。如果將池大小設置爲20,是不是意味着動態碼只能處理20個併發請求(因爲每個請求都使用數據庫,因此需要從池中進行連接)?這看起來像是一個巨大的瓶頸,所以肯定我誤解了一些東西。幫幫我! – Joe 2016-08-12 04:18:09