对不起,如果这没有意义。如果需要澄清,请发表评论。
我正在 web.py 中编写一个小文件上传应用程序,我正在使用 mod_wsgi + apache 进行部署。我的会话管理一直有问题,想澄清一下 web.py 中的线程是如何工作的。
本质上,当有人访问我的页面时,我将代码嵌入到我呈现的 html 页面的隐藏字段中。然后通过包含文件和代码的标准 POST 请求完成文件上传。然后,我通过在文件上传 POST 方法中更新文件并使用对不同类的 GET 请求获取它来检索文件的进度。“会话”(为它相当幼稚而道歉)存储在这样的会话对象中:
class session:
def __init__(self):
self.progress = 0
self.title = ""
self.finished = False
def advance(self):
self.progress = self.progress + 1
这些会话都保存在我的应用程序脚本中的全局字典中,然后使用我的代码(从之前的代码)作为键进行访问。
出于某种原因,我的进度似乎保持在 0 并且永远不会增加。我已经调试了几个小时,我发现上传类和进度类引用的两个会话对象不一样。然而,这两个代码(据我所知)是相等的。这让我发疯,因为它在我本地机器上的 web.py 测试服务器上没有任何问题。
编辑:经过一些研究,似乎每个请求都会复制字典。我尝试将字典放在另一个字典中并导入,但这不起作用。除了使用数据库来“分离”会话字典还有其他方法吗?