mod\u python变量缓存

2024-10-01 13:41:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用mod\u python在Apache中运行Trac。我正在开发一个插件,但不确定全局变量是如何存储/缓存的。

我是python的新手,在google上搜索了这个主题,发现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")

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

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

有人能提供任何关于正在发生的事情的见解吗? 谢谢你


Tags: webmod列表newdef条目amtrac
2条回答

阅读mod python的常见问题解答

Global objects live inside mod_python for the life of the apache process, which in general is much longer than the life of a single request. This means if you expect a global variable to be initialised every time you will be surprised....

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

所以问题是为什么要使用全局变量?在

强制性:

使用^{}切换到wsgi。在

Don't use ^{}。在

Help available for configuring ^{} with trac。在

相关问题 更多 >