2

私はPythonとピラミッドフレームワークにかなり慣れていません。最近、データベース (postgres) のニーズに対応するために SQLSoup を紹介されました。

dbEngine1 = SqlSoup(settings['sqlalchemy.db1.url'])
users = dbEngine1.users.fetchall()

すべてが正常に機能していますが、ピラミッド アプリを短期間使用した後、このエラー メッセージが表示されます。postgres ですべてのアイドリング接続を解放するには、ピラミッドを強制終了する必要があります (以下の例外をスローする前に約 50 のアイドリング接続)。

sorry, too many clients already

私の質問は、このアイドリング接続を閉じる方法です。以下に示すようにコード行を追加しようとしましたが、役に立ちません。

dbEngine1 = SqlSoup(settings['sqlalchemy.db1.url'])
users = dbEngine1.users.fetchall()
dbEngine1.engine.connect().close()

SQLAlchemy の達人からのポインタはありますか?

4

1 に答える 1

1

dbEngine1あなたの Pyramid アプリへのリクエストごとに作成しているようです。

Web アプリケーションで SqlSoup を適切に使用するには、SA セッションを使用する必要があります。

このページの「セッションへのアクセス」セクションを参照してください。

このアイドリング接続を閉じるにはどうすればよいですか

raw SA などの SqlSoup は接続プールを使用し、アイドル状態のプール内の各接続は util クエリが実行されます。この接続プールは一度作成する必要があります。

于 2011-12-10T07:58:37.687 に答える