Das Verhalten Ihres Sehens erwartet. Neue Instanzen werden nicht für jede Anfrage gestartet.
Verwenden Sie das Request-Objekt, env Objekt oder einen Thread lokalen Variable zum Speichern von Informationen, die Sie zugänglich, wo jeder in Ihrem Code für das Leben des Antrags haben wollen. (Environ wird in jeder Anfrage neu erstellt, also ist es sicher).
Siehe Is threading.local() a safe way to store variables for a single request in Google AppEngine? für eine Diskussion über Thread-Lokalspeicher verwenden. Hier
ist ein Beispiel für das lokale Anforderungsobjekt speichern spezifische Informationen für das Leben einer Anfrage zu speichern. Der gesamte Code muss sich in Ihrem Handler befinden. Alle Teile sind in webapp2 dokumentiert. Übrigens verwende ich webapp2 nicht, also wird dies nicht getestet. (Ich benutze Pyramide/Bobo und dieses Modell zum Durchführen von Caching auf Anforderungsebene).
Klasse MyHandler (webapp2.RequestHandler):
def get(self):
req = webapp2.get_request()
# you have request in self, however this is to show how you get a
# request object anywhere in your code.
key = "Some Key"
if req:
# getting some store value from the environ of request (See WebOb docs)
someval = req.environ.get(key,None)
if someval :
# do something
# and setting
if req:
req.environ[key] = 'some value'
es auf diese Weise tun gibt es die Einschränkung, dass environ [ 'key'] Wert muss ein String sein.
die WebOb Dokumente lesen, wie im Request-Objekt beliebige Werte zu speichern. http://docs.webob.org/en/stable/reference.html#ad-hoc-attributes -
req.environ['webob.adhoc_attrs']
{'some_attr': 'blah blah blah'}
Auch wenn Sie eine Lese des webapp2 Request-Objekt docs haben, gibt es eine Registrierung, die Sie zum Speichern von Informationen verwenden können - http://webapp-improved.appspot.com/api/webapp2.html#webapp2.Request
Hinweis, jede Variable, die Sie außerhalb eines Request-Handler definieren im Wesentlichen zwischengespeichert, verfügbar für die Lebensdauer der Instanzen. Dies ist, wo Sie falsch liegen.
Um zu verstehen, wie/warum Caching App-Ebene funktioniert - und warum Ihr erster Versuch nicht tut, was man einen Blick auf https://cloud.google.com/appengine/docs/python/requests#Python_App_caching
Leider haben Sie mit dem Code helfen mir haben? Ich bin neu bei Python ... – Dennix