私はherokuに、20
の接続制限を持つDevプランを使用してPostgresアドオンを使用して開発中です。私は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
の背景から来ているので、私はDB接続(上記の例のような)をどのように処理するのかに関する考え方を持っていますが、それはpython
とうまく適合しない恐れがあります。
db接続を1か所で抽象化し、すべてのインポートで同じ接続を使用する適切な方法は何ですか?
これは古い回答ですが、私はこの詳細を見つけるのが難しいと思います。プールサイズを20に設定した場合、dynoは20回の同時リクエストしか処理できません(各リクエストでデータベースが使用され、プールから接続されるため)。これは大きなボトルネックのように思えるので、確かに私は何か誤解しています。助けて! – Joe