2011-01-04 3 views
1

私はDJangoのビューでグローバルなバールにいくつかの情報を保存しています。この情報は、Python Djangoプロセスのすべてのスレッドがアクセスできます。しかし、私はDjangoがどのように動作しているのか疑問に思っています。プロダクションDjangoは複数回fork()を処理してリクエストを処理しますか?もしそうなら、このデータはプロセス間で同じではないでしょう。 Djangoフォークがあれば誰でも知っていますか?プロダクションDJangoサーバーはフォークしますか?

+3

グローバルバールを使用しないでください。そうでなければ、あなたが言及している問題が発生します(もちろん、使用するプロダクションサーバーによっても異なります)。おそらく 'request.session'のデータに適した場所を探してください... –

答えて

2

私はそれがあなたの展開に依存していると確信していますが、FastCGIまたはWSGIで実行している場合は、一般に、受信要求を処理するために多数のサーバープロセスをフォークします。

私はmod_pythonでの実行についてはわかりませんが、最近はWSGIに賛成することが推奨されていません。

0

私はこの分野の専門家ではないので、私が今行ったばかりのgrep-ingにのみ基づいて回答しています。

のFastCGIサーバが構成設定によっては、フォークすることができるようだ:

http://code.djangoproject.com/browser/django/tags/releases/1.2.3/django/core/servers/fastcgi.py#L171 http://code.djangoproject.com/browser/django/tags/releases/1.2.3/django WSGIについては/utils/daemonize.py

、私は、Djangoのサイドハンドリングが要求処理に直進していることを信じている:

http://code.djangoproject.com/browser/django/tags/releases/1.2.3/django/core/handlers/wsgi.py#L217

であり、フォークはmod_wsgi:http://code.google.com/p/modwsgi/ - 組み込みモードとデーモンモードで、そして/またはApache(ワーカー対プリフォークビルド)で設定されています。

0

mod_wsgiのため、読み:

http://code.google.com/p/modwsgi/wiki/ProcessesAndThreading

それはスレッド/プロセス間で共通のデータを使用する点で様々なモデルとガイドラインを説明しています。状況は他のホスティングシステムとあまり変わらない。

関連する問題