私はApache prefork MPMで動作する単純なwsgiアプリケーションを持っています。私はmodwsgi docs on processes and threads(本当に良い読み込み)を読んでいます。私はまだいくつかのことと同期が必要なものについて混乱しています。WSGIプロセス/スレッドフラグと同期の混乱
/1私のApacheの設定はこのように私のWSGIアプリへの単純なWSGIScriptAliasの場合:
WSGIScriptAlias /alias_name /path/to/wsgi/app.wsgi
とのprefork MPM Apacheの構築と仮定すると、その後、WSGIスレッドとプロセスフラグは次のようにでてきます[ wsgi.multiprocess = True、wsgi.multithread = False)。私はこれが単一のプロセス(スレッドなし)が各要求を処理していることを意味します。これらの用語では、プロセス間でIPCを実行していないため、各プロセスに独自のアドレス空間があるため、何も同期する必要はありません。それは正しい考えですか?
/2私のApacheの設定は、しかしWSGIDaemonPrcoessesを使用した場合:
WSGIScriptAlias /alias_name /path/to/wsgi/app.wsgi
WSGIDaemonProcess wsgi_proc_names processes=2 threads=2
WSGIProcessGroup wsgi_proc_names
を、その後WSGIフラグが[wsgi.multiprocess =真、wsgi.multithread =真]として来ている可能性がありますスレッドはお互いのつま先を踏み越えるかもしれません。ここで、特定のデータへのアクセスを同期させる必要があるかもしれません。私のアプリケーションにI/Oがない場合は、他に同期が必要ですか?たとえば、クラス変数は編集時にロックする必要がありますか?複数のスレッドから呼び出されている関数をロックして解放する必要がありますか?これは私が最も混乱していることです。
おかげ アンジェロ
返信いただきありがとうございました。私はmaztazを見ているすべての例がありますか? – angeloHarpy
私は手元にいませんが、終わりまでに何かを得ることができるかもしれません – maztaz