2

私は実際にMySQLとPyroでSQLAlchemyを使用してサーバープログラムを作成しています。多くのクライアントがこのサーバーに接続してリクエストを行います。プログラムはデータベース MySQL からの情報のみを提供し、時にはいくつかの計算を行います。

クライアントごとにセッションを作成するのと、すべてのクライアントに同じセッションを使用するのとではどちらがよいですか?

4

2 に答える 2

2

あなたが欲しいのはですscoped_session

利点は次のとおりです (クライアント間の単一の共有セッションと比較して):

  • ロック不要
  • サポートされているトランザクション
  • データベースへの接続プール (SQLAlchemy によって暗黙的に行われる)

それの使い方

以下を作成するだけですscoped_session

Session = scoped_session(some_factory)

Pyro メソッドでアクセスします。

class MyPyroObject():
    def remote_method(self):
         Session.query(MyModel).filter...

舞台裏

上記のコードは、必要に応じてセッションが作成され、閉じられることを保証します。セッションオブジェクトは、スレッドで初めてアクセスするとすぐに作成され、スレッドが終了すると削除/閉じられます ( ref )。各 Pyro クライアント接続はデフォルト設定で独自のスレッドを持っているため (変更しないでください!)、クライアントごとに 1 つのセッションがあります。

于 2013-01-18T10:24:54.237 に答える
-1

私が試すことができる最善の方法は、すべてのクライアントの要求で新しいセッションを作成することです。パフォーマンスにペナルティがないことを願っています。

于 2013-01-16T14:14:17.383 に答える