1

私は現在 DJango - apache インストール (mod_wsgi 上) を使用して、イントラネット カード ゲームをホストする Web サイト (プロジェクト) を実行しています。個々のユーザーのスコアは、他のユーザーのアクションによっても影響を受ける可能性があります。urls.py でインスタンス化した Score クラスを使用しており、すべてのプレーヤー/ユーザーがこのクラスのオブジェクト [scObj = Scorer('Spades')] にアクセスします。この obj の内部には、プレーヤーのアクション、スコアの更新などの Dicts があります。

    class Scorer:
        def __init__(self, suitname):
            self.__suitname = suitname

スコアラー クラスは、Scorer.py に個別に格納されます。

    scObjs = (Scorer('Spades'), Scorer('Hearts'), Scorer('Clubs'), Scorer('Diamonds'),)

オブジェクトは urls.py で作成されます

このモデルは、DEV 展開で完全に動作していました。Apache で PROD に移動したとき、これが壊れました (作成されている scObj のインスタンスが複数あるため、プレーヤー 1 のプレーヤー 2 への移動からのスコアの更新は、プレーヤー 2 のプレーヤー 3 による別の移動に反映されません)。 )。シングルトン クラスの動作/グローバルな scObj の動作をシミュレートする必要がありますが、これはできません。ワーカー - mpm - マルチスレッド モードで apache を実行しているので、マルチプロセスが原因で scObj の複数のコピーが存在するという問題はないと想定しています。

問題は mod_wsgi に関連していますか?

4

1 に答える 1

1

読んだ:

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

組み込みモードを使用すると、UNIX システム上のワーカー MPM であろうと prefork MPM であろうと、マルチプロセスになります。

デーモン モードと単一プロセスのデフォルトを使用すれば問題ありません。

必要に応じて適切なデータベース ストレージを使用する方法については、ドキュメントの最後にある注意事項を参照してください。また、データへのマルチスレッド アクセスに関する警告に注意し、コードをスレッド セーフにします。

于 2012-11-05T22:02:23.323 に答える