我目前正在使用DJango - apache安装(在mod_wsgi上)来运行一个网站(项目),它托管了一个内部网纸牌游戏,它的规则很复杂,它只需要每个用户一个得分的主list+dict数据结构。个人用户的分数也会受到其他用户操作的影响。我使用了一个在urls.py中实例化的Score类,所有玩家/用户都可以访问这个类‘object scObj =Scorer’(‘黑桃’)。在这个obj的内部,有球员动作的字典,比分更新等等。
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的多个实例中,所以player-1在player-2上的移动的得分更新不会反映在player-2上的player-3的不同移动中)。我需要模拟一个单例类行为/全局scObj行为,这是我不能做到的。我在worker - mpm - multithreaded模式下运行apache,所以我假设由于多进程而导致scObj的多个副本存在的问题不存在。
问题是否与mod_wsgi有关?
发布于 2012-11-06 06:02:23
阅读:
http://code.google.com/p/modwsgi/wiki/ProcessesAndThreading
使用嵌入式模式,在UNIX系统上,无论是worker MPM还是prefork MPM都是多进程的。
使用守护程序模式和默认的单个进程,您应该可以。
如有必要,请参阅该文档末尾的注释,了解如何使用适当的数据库存储。还要注意有关多线程访问数据的警告,并确保代码线程安全。
https://stackoverflow.com/questions/13236766
复制相似问题