mod_python缓存变量

时间:2009-06-15 10:32:45

标签: python caching trac mod-python

我正在使用mod_python在Apache中运行Trac。我正在开发一个插件,我不确定如何存储/缓存全局变量。

我是python的新手并搜索了主题并发现mod_python缓存了python模块(我认为)。但是,我希望在重新启动Web服务时重置缓存,但似乎不是。我说这是因为我有一个全局变量是一个列表,我测试列表以查看是否存在值,如果没有,那么我添加它。我第一次运行它时,它在列表中添加了三个条目。随后,该列表从一开始就有三个条目。

例如:

globalList = []

class globalTest:

  def addToTheList(itemToAdd):
      print(len(globalTest))
      if itemToAdd not in globalList:
          globalList.append(itemToAdd)

  def doSomething():
    addToTheList("I am new entry one")
    addToTheList("I am new entry two")
    addToTheList("I am new entry three")

上面的代码只是我正在做的一个例子,而不是实际的代码;-)。但实际上Trac调用了doSomething()方法。第一次运行时,它添加了所有三个条目。现在 - 即使在重新启动Web服务器之后,len(globalList)命令也始终为3.

我怀疑答案可能是我的会话(以及全局变量)正在被缓存,因为当我在Web服务器重启后刷新Trac中的页面时,Trac会记住我的登录详细信息。如果是这种情况 - 如何强制清除缓存。请注意,我不想手动重置globalList变量,即globalList.length = 0

任何人都可以提供有关正在发生的事情的任何见解吗? 谢谢

2 个答案:

答案 0 :(得分:4)

答案 1 :(得分:3)

阅读mod-python faq,它说

  

全局对象存在于mod_python中   对于apache进程的生命,   这通常比长得多   一个请求的生命。这个   意味着你是否期望一个全局变量   每次都要初始化   感到惊讶....

转到链接 http://www.modpython.org/FAQ/faqw.py?req=show&file=faq03.005.htp

所以问题是你想使用全局变量的原因吗?