Страница не всегда отображается

1

В Google App Engine у ​​меня есть следующий код, который показывает простую HTML-страницу.

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

Проблема заключается в том, что страница не всегда отображается. Index.html - это простой "Hello World!". После обновления страницы страницы страница отображается правильно (т.е. Найден файл index.html...). Я попытался вызвать флеш в конце, но это не помогло. Я могу воспроизвести это с помощью SDK и на их сервере.

Я что-то упустил? Кто-то имеет представление о том, что происходит?

Спасибо

Теги:
google-app-engine

2 ответа

3
Лучший ответ

Ваш обработчик script (тот, на который ссылается app.yaml) имеет функцию main(), но нуждается в этой строфе в конце:

if __name__ == '__main__':
  main()

Что происходит, когда в первый раз ваш script запускается в данном интерпретаторе, он интерпретирует ваш основной script, который ничего не делает (таким образом возвращая пустой ответ). При последующих вызовах интерпретатор просто выполняет вашу основную() (документальную оптимизацию), которая генерирует страницу, как ожидалось. Добавление строфы выше приведет к тому, что она также будет выполнять main при первоначальном импорте.

0

Невозможно воспроизвести - с измененным каталогом на ./templates (в моей настройке нет ../templates), и добавлена ​​обычная функция main, и этот script, назначенный в app.yaml, чтобы какой-то произвольный URL-адрес, он успешно выполняет "Hello World" каждый раз. Предположим, нам нужна дополнительная информация, чтобы помочь - записывать записи (возможно, здесь добавляются вызовы logging.info?), app.yaml, где main и т.д. И т.д.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню