1

カウンターのあるシンプルなdjangoページがあります。私はそれを提供するためにmod_wsgiでApache2を使用します。

まず、このページに入ると、カウンターに0が表示されます。2回目にページに入ると、カウンターに1-が表示されます。これも正しい動作です。問題は今始まります。このページに3回入ると、再び0になります。

更新すると、0から1の間で、明らかにキャッシュなどを使用します。しばらく待ってから再試行すると、2と3が表示されますが、このキャッシュまたはそれがフラッシュされるまで、これらの値でスタックし、その後、カウンターが続行します。

誰かが私がそれを正しく動作させる方法を知っていますか(実際のシナリオはDBからデータを取得することを扱っていますが、この奇妙なキャッシュの問題は同じです)。

ところで、djangoの設定にキャッシュエンジンが設定されていません。

4

2 に答える 2

3

インスタンスの数!=他の投稿者によって提案されたプロセス*スレッド。インスタンスの数==プロセスのみ。

読む:

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

埋め込みモードを実行している可能性があります。代わりにデーモンモードを使用する必要があります。

とにかくそれがデフォルトであり、オプションを使用するとあなたが望まないかもしれない他の副作用があるので、'processes=1'を設定しないでください。

デーモンモードのデフォルトのスレッド数は15です。これは、アプリケーションがスレッドセーフである限り問題ありません。具体的には、グローバルカウンターへのアクセスはスレッドセーフである必要があります。

また読む:

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

デーモンモードの設定方法の例があります。WSGIDaemonProcessディレクティブとWSGIProcessGroupディレクティブの両方を使用する必要があります。WSGIDaemonProcessだけでは不十分です。

于 2010-04-05T23:49:22.350 に答える
1

Djangoの複数のインスタンスを実行しています。Apacheはそれらの1つにランダムに接続します。

テストの目的で、apache.confでこれを試してください。

WSGIDaemonProcess mysite processes=1 maximum-requests=500 threads=1

(本番環境で使用するプロセスを増やしたい場合があります。)

オプションの完全なドキュメントを参照してください。

于 2010-04-05T21:34:34.897 に答える