我的网站上有一个特定页面,我想阻止同一个用户连续两次访问它。为了防止这种情况,我计划创建一个 Lock 对象(来自 Python 的线程库)。但是,我需要跨会话存储它。尝试在会话(特别是 Beaker 会话)中存储 Lock 对象时,有什么需要注意的吗?
问问题
165 次
2 回答
1
将 threading.Lock 实例存储在会话中(或其他任何需要序列化的地方)是一个糟糕的主意,如果您尝试这样做,您可能会遇到异常(因为这样的对象不能被序列化,例如,它不能被pickle
d) . 传统的进程协作序列化方法依赖于文件锁定(在“人工”文件上,例如在目录中,例如,/tmp/locks/<username>
如果您希望锁定是每个用户,正如您所指出的那样)。我相信维基百科条目很好地描述了一般领域;如果您告诉我们您正在运行什么操作系统,我们可能会提出更具体的建议(不幸的是,我认为没有跨平台的解决方案)。
于 2010-05-09T04:49:22.860 回答
0
I just realized that this was a terrible question since locking a lock and saving it to the session takes two steps thus defeating the purpose of the lock's atomic actions.
于 2010-05-08T17:01:42.610 回答