我目前正在使用DJango-apache安装(在mod_wsgi上)来运行一个托管内部网卡游戏的网站(项目),其规则很复杂,只需要1个主列表+ dict数据结构。用户。个人用户的分数也可能受到其他用户操作的影响。我使用的是Score类,我在urls.py中实例化,所有玩家/用户都访问此类'对象[scObj = Scorer('Spades')]。在这个对象的内部有玩家行动,得分更新等的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上移动的分数更新并没有反映在玩家-3上的玩家-3的不同移动中)。我需要模拟单例类行为/全局scObj行为,这是我无法做到的。我在worker-mpm - 多线程模式下运行apache,所以我认为由于多进程而导致scObj的多个副本存在的问题不存在。
问题是否与mod_wsgi有关?
答案 0 :(得分:1)
读:
http://code.google.com/p/modwsgi/wiki/ProcessesAndThreading
使用嵌入式模式,无论是UNIX系统上的worker MPM还是prefork MPM都将是多进程。
使用守护程序模式和单个进程的默认值,你应该没问题。
请参阅该文档末尾的注释,但必要时请使用正确的数据库存储。还要注意有关多线程访问数据的警告,并使代码线程安全。