WSGIでApache(prefork)内でPythonアプリケーションを実行しようとしましたが、Pythonインタプリタを1つ使用するようになっています。競合状態の発生を防ぐためにアプリケーションがスレッド同期を使用するため、これは必要です。 Apacheプリフォークは複数のプロセスを生成するので、コードはインタプリタ間で共有されないので、スレッドの同期は無関係です(つまり、各スレッドは他のプロセスとは関係のない独自のロックしか認識しません)。ここApache Prefork/WSGIでPythonインタプリタを共有する
セットアップある:ここ
- アパッチ2.0(preforkの)
- WSGI
- パイソン2.5
は、関連するApacheの設定である:ここ
WSGIApplicationGroup %{GLOBAL}
<VirtualHost _default_:80>
WSGIScriptAlias//var/convergedsecurity/apache/osvm.wsgi
Alias /admin_media/ /var/www/html/admin_media/
<Directory /var/www/html/admin_media>
Order deny,allow
Allow from all
</Directory>
Alias /media/ /var/www/html/media/
<Directory /var/www/html/media>
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
私がこれまでに試したことです(whiのどれもCH)働い:
- は、仮想ホスト内WSGIDaemonProcessとWSGIProcessGroupを指定WSGIApplicationGroup %{GLOBAL}
の追加:
WSGIDaemonProcess OSVMスレッド= 50
WSGIProcessGroupのOSVM
です方法はありませんApache PreforkにWSGIで単一のPythonインタプリタを使用させますか?ドキュメントはWSGIDaemonProcessとWSGIApplicationGroupオプションを使用することを暗示しているようですが、Apacheはプロセスごとに個別のPythonインタープリタを作成しています。
ありがとう、あなたの応答は完璧でした。デーモンプロセスグループを設定したら、私はいくつかの問題が発生しました。どちらもGoogleグループで提供した情報で解決されました。 具体的には、Apacheの設定(http://code.google.com/p/modwsgi/issues/detail?id=40)でUserとGroupのディレクティブを先に配置し、WSGISocketPrefixを設定する必要がありました。 ご協力いただきありがとうございます。 –