WSGI middleware behält Listeinträge...
Verfasst: Montag 29. Mai 2006, 16:48
Ich hab mir eine kleine WSGI middleware geschrieben, die am Ende eines requests in der erzeugen HTML-Seite Styles/JavaScript einfügen soll. Dabei wird einfach ein Tag ersetzt mit Daten aus einer Liste.
Das funktioniert eigentlich auch. Das Problem ist allerdings das die Daten aus der Liste, einmal gesetzt in der Liste bleiben! Ich dachte eigentlich meine Liste ist für jeden Request leer, dem ist aber nicht so...
Irgendwie weiß ich nicht, wo ich die Liste, wie löschen kann...
Hier mal der relevante Code:
Das funktioniert eigentlich auch. Das Problem ist allerdings das die Daten aus der Liste, einmal gesetzt in der Liste bleiben! Ich dachte eigentlich meine Liste ist für jeden Request leer, dem ist aber nicht so...
Irgendwie weiß ich nicht, wo ich die Liste, wie löschen kann...
Hier mal der relevante Code:
Code: Alles auswählen
add_code_tag = "<PyLucidInternal:addCode/>"
class Replacer(object):
def __init__(self, app):
self.app = app
def addCode(self, line, environ):
code = environ['PyLucid.addCode']
if code==[]:
# Gibt keinen Add-Code
return ""
code = "\n".join(code)
line = line.replace(add_code_tag, code)
return line
def __call__(self, environ, start_response):
result = iter(self.app(environ, start_response))
for line in result:
if add_code_tag in line:
line = self.addCode(line, environ)
yield line
if hasattr(result, 'close'):
result.close()
class AddCode(list):
def __init__(self, app):
list.__init__(self)
self.tag = add_code_tag
self.app = app
def __call__(self, environ, start_response):
#~ self.__list__ = []
environ['PyLucid.addCode'] = self
return self.app(environ, start_response)