2009-06-12 2 views
1

In Google App Engine habe ich den folgenden Code, der eine einfache HTML-Seite zeigt.Seite wird nicht immer gerendert

import os 

from google.appengine.ext.webapp import template 
from google.appengine.ext import webapp 

class IndexHandler(webapp.RequestHandler): 
    def get(self): 
    template_values = { } 

    path = os.path.join(os.path.dirname(__file__), '../templates/index.html') 
    self.response.out.write(template.render(path, template_values)) 

Das Problem ist, dass die Seite nicht immer gerendert wird. Die index.html ist eine einfache "Hallo Welt!". Nach ein paar Seitenaktualisierungen wird die Seite korrekt angezeigt (d. H. Die Datei index.html wird gefunden ...). Ich habe am Ende versucht, flush zu rufen, aber es hat nicht geholfen. Ich bin in der Lage, dies mit dem SDK und auf ihrem Server zu wiederholen.

Fehle ich etwas? Hat jemand eine Vorstellung von dem, was vor sich geht?

Dank

Antwort

3

Ihr Handler-Skript (die von app.yaml verwiesen) einen Haupt() Funktion, sondern muss diese Stanze am Ende:

if __name__ == '__main__': 
    main() 

Was passiert, ist, dass das erste Mal, das Skript in einem bestimmten Interpreter ausgeführt wird, ist es Ihre Haupt Skript interpretiert, die nichts tut (also eine leere Antwort zurückgibt). Bei nachfolgenden Aufrufen führt der Interpreter einfach Ihre main() (eine dokumentierte Optimierung) aus, die die Seite wie erwartet generiert. Wenn Sie die obige Zeilengruppe hinzufügen, wird sie auch beim ersten Import ausgeführt.

0

nicht reproduzieren kann - mit Verzeichnis ./templates geändert (keine ../templates in meinem Setup hat), und die übliche main Funktion hinzugefügt, und dieses Skript in app.yaml zu einer beliebigen URL zugewiesen, Es dient immer erfolgreich "Hello World". Ratet mal, wir weitere Informationen Hilfe benötigen - Log-Einträge (? Vielleicht logging.info Anrufe hier hinzufügen), app.yaml, wo main ist, etc, etc ...