私のWebベースのアプリでは、私はCherrypy 3.2をHTTPフレームワークとして使用することに決めました。CherryPy、SQLAlchemyコアスレッドの安全性?
私はcherrypy.Application
クラスを使用して、Apache2経由でmod_wsgiで提供されるWSGI互換appliactionオブジェクトを作成しています。
また、私はSQLalchemy 0.7.3(ORMではない)のコアコンポーネントだけを使用しています。リクエストごとに正確なセッションバインディングを行うためにcherrypyにいくつかのツールが用意されています(SAToolsなど)。しかし、SQLalchemyのSessionオブジェクトは、コアではなくORMの一部です。
私は同様のツールを作成する方法についてはセッションがなくても考え始めました。
SQLAlchemyののドキュメントは言う:Pythonのマルチプロセッシングモジュールos.forkシステムコールを使用して、複数のプロセス・アプリケーション、 または例えば
、それは通常、別のエンジンを使用する必要が です子プロセスごとに
チェリーピーススレッドごとに1つのエンジンを正しく作成するにはどうすればよいですか?スレッドはapache2(おそらく)によって作成されることに注意してください。
ありがとうございました!
編集:それは多分重要であり、そのWSGIアプリケーションがmod_wsgiの下でのapache2
これは本当ですか?私はそれをテストしていたので、アプリケーションオブジェクトは実際にスレッド間で共有されていると思います。 – JoshuaBoshi
質問を編集し、wsgiアプリケーションがデーモンモードで使用されているという情報を追加しました(この場合はおそらく重要です) – JoshuaBoshi
スレッドとはプロセスが異なります。私は引用されたテキストに焦点を当てました。これはos.forkについて語ります。これは、スレッドではなくプロセスに関することを意味します。私はあなたがあなたが引用されたセクションに基づいて必要とすることがわかりませんスレッドごとに1つnedと信じて混乱していたとそれを取った。 –