2009-06-12 6 views
1

Dans Google App Engine, j'ai le code suivant qui affiche une page HTML simple.La page n'est pas toujours affichée

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)) 

Le problème est que la page n'est pas toujours rendue. L'index.html est un simple "Hello World!". Après quelques rafraîchissements de page, la page s'affiche correctement (c'est-à-dire que le fichier index.html est trouvé ...). J'ai essayé d'appeler la couleur à la fin, mais cela n'a pas aidé. Je suis capable de le reprocher avec le SDK et sur leur serveur.

Ai-je raté quelque chose? Est-ce que quelqu'un a une idée de ce qui se passe?

Merci

Répondre

3

Votre script de gestionnaire (celui référencé par app.yaml) a une principale fonction(), mais a besoin de cette strophe à la fin:

if __name__ == '__main__': 
    main() 

ce qui se passe est que la première fois que votre script est exécuté dans un interpréteur donné, il interprète votre script principal, qui ne fait rien (revenant ainsi une réponse en blanc). Lors des invocations suivantes, l'interpréteur exécute simplement votre main() (une optimisation documentée), qui génère la page comme prévu. L'ajout de la strophe ci-dessus entraînera l'exécution de main lors de l'importation initiale.

0

Impossible de reproduire - avec le répertoire changé à ./templates (n'ont pas ../templates dans ma configuration), et la fonction main habituelle ajoutée, et ce script affecté à app.yaml à une URL arbitraire, il sert avec succès "Hello World" à chaque fois. Devinez nous avons besoin de plus d'informations pour aider - les entrées du journal (? Peut-être ajouter logging.info appels ici), app.yaml, où est main, etc, etc ...

Questions connexes