Я использую mod_python для запуска Trac в Apache. Я разрабатываю плагин и не уверен, как глобальные переменные хранятся / кэшируются.
Я новичок в python, погуглил тему и обнаружил, что mod_python кеширует модули python (я думаю). Тем не менее, я ожидаю, что кэш будет сброшен при перезапуске веб-службы, но это не так. Я говорю это, потому что у меня есть глобальная переменная, которая является списком, я проверяю список, чтобы увидеть, существует ли значение, а если нет, то я добавляю его. Когда я впервые запустил это, он добавил три записи в список. Впоследствии список содержит три записи с самого начала.
Например:
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. При первом запуске он добавил все три записи. Теперь - даже после перезапуска веб-сервера команда len (globalList) всегда равна 3.
Я подозреваю, что ответом может быть то, что мой сеанс (и, следовательно, глобальная переменная) кэшируется , потому что Trac запоминает мои данные для входа в систему, когда я обновляю страницу в Trac после перезапуска веб-сервера. Если это так - как заставить кеш очищаться? Обратите внимание, что я не хочу сбрасывать переменную globalList вручную, т.е. globalList.length = 0
Может ли кто-нибудь предложить какое-либо понимание того, что происходит?
Спасибо