1

我目前正在使用 DJango - apache 安装(在 mod_wsgi 上)来运行一个托管 Intranet 纸牌游戏的网站(项目),其规则非常复杂,以至于每个用户只需要 1 个主列表 + dict 分数数据结构。单个用户的分数也会受到其他用户操作的影响。我正在使用我在 urls.py 中实例化的 Score 类,所有玩家/用户都访问这个类的对象 [scObj = Scorer('Spades') ]。在这个 obj 内部有玩家动作、分数更新等的字典。

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

scorer 类单独存储在 Scorer.py 中

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

对象在 urls.py 中创建

该模型在 DEV 部署中完美运行。当我在 apache 中移动到 PROD 时,这坏了(因为创建了多个 scObj 实例,因此玩家 1 对玩家 2 的移动的分数更新不会反映在玩家 3 对玩家 2 的不同移动中) . 我需要模拟单例类行为/全局 scObj 行为,这是我无法做到的。我在worker - mpm - 多线程模式下运行apache,所以我认为由于多进程而存在多个scObj副本的问题不存在。

问题与 mod_wsgi 有关吗?

4

1 回答 1

1

读:

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

使用嵌入式模式,无论是 UNIX 系统上的 worker MPM 还是 prefork MPM 都将是多进程的。

使用守护进程模式和单个进程的默认值,你应该没问题。

请参阅该文档末尾的注释,尽管必要时使用适当的数据库存储。还要注意有关多线程访问数据的警告并确保代码线程安全。

于 2012-11-05T22:02:23.323 回答