App Engine игнорирует мои обновления исходного кода и мой файл app.yaml

У меня приложение AppEngine отлично работает с сервером разработки на моем настольном компьютере, но я не могу получить версию на сервере Google, чтобы обратить внимание на обновления исходного кода.

Вот самая яркая иллюстрация. Мой файл app.yaml начинался как:

application: xxxxxxxx
version: 1
runtime: python
api_version: 1

builtins:
- datastore_admin: on

handlers:
- url: /statix
  static_dir: statix

- url: /favicon\.ico
  static_files: favicon.ico
  upload: favicon\.ico

- url: .*
  script: main.py

Последняя строка направляет все нестатические URL-адреса в файл main.py. Назовем эту версию main.py «старой» версией.

Проблемы начались после того, как я внес рутинные изменения в main.py (тем самым создав «новую» версию). «Новая» версия отлично работает на моем компьютере с локальным хостом, но ее изменения не передаются через Большой Интернет после развертывания в GAE. Вместо этого GAE обслуживает страницы, вычисленные "старым" main.py. Иногда выход из GAE Launcher и повторный запуск помогали, но это не помогало уже некоторое время (часы). Даже с перезагрузкой машины.

Итак, чтобы поэкспериментировать, я изменил последнюю строку app.yaml на:

script: main2.py

Я повторно развернулся в GAE, и когда я захожу на свой веб-сайт, я получаю ошибку 500 - как и ожидалось - потому что в проекте нет файла main2.py.

Поэтому я переименовал «новый» файл диска main.py в main2.py, повторно развернул его в GAE, и ошибка 500 исчезла - также как и ожидалось.

Но вот где это становится странным. Этот только что загруженный файл main2.py является «новым» файлом main.py, просто переименованным. НО, страницы, которые обслуживает GAE, вычисляются "старым" main.py!

Я очистил кеш браузера. Я даже запустил пыльную копию Opera, которая никогда не видела URL-адресов, обслуживаемых этим проектом, и она также отображает устаревшее содержимое страницы, которое создает "старый" main.py.

Я использую App Engine уже пару лет. Неделю назад у меня никогда не было таких проблем. Недавно я обновил Launcher до версии 1.7.3 (Mac OS X 10.6.8). Сначала я подумал, что мой лаунчер каким-то образом поврежден, но эксперимент app.yaml предполагает, что это что-то в самой GAE. У меня в программе запуска GAE много проектов, и я действительно не хочу выполнять чистую установку.

Бьюсь об заклад, мне будет неловко, когда я услышу твои мысли, но у меня кончились идеи.

ДОБАВЛЕНИЕ: пользователь dragonx предположил, что кеширование может быть в основе проблемы, которая, теперь, когда я думаю об этом, действительно началась после того, как я настроил собственный домен для приложения с помощью службы Google Domains . Но вот, согласно curl -D, заголовок на домашней странице моего приложения:

HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Cache-Control: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Vary: Accept-Encoding
Date: Tue, 11 Dec 2012 02:29:43 GMT
Server: Google Frontend
Transfer-Encoding: chunked

Похоже, кеширование отключено. Тем не менее, я не могу найти, как вернуться в службу Google Domains и отключить кеширование. :-(

ПРИЛОЖЕНИЕ № 2: я загрузил свои файлы как другое приложение (то есть еще одно из 10 разрешенных мне файлов). Они обслуживали обновления. Однако, когда я внес изменения во вновь загруженные файлы, эти изменения не появились. Следовательно, похоже, что независимо от проблемы, она влияет на все мои приложения под моей учетной записью.


person Iron Pillow    schedule 10.12.2012    source источник
comment
измените версию в app.yaml на 2. Разверните. Измените версию по умолчанию, которая обслуживает, на 2 с панели управления. Удалить 1. Проблема, вероятно, исчезнет.   -  person Paul Collingwood    schedule 10.12.2012
comment
Отличная идея - но, увы, проблему не решила.   -  person Iron Pillow    schedule 11.12.2012
comment
Попробуйте удалить, а затем прочитать программу из лаунчера.   -  person Paul Collingwood    schedule 11.12.2012
comment
Хорошая идея. Это тоже не сработало. Я удалил приложение из пусковой установки, увеличил версию в app.yaml, добавил приложение обратно в пусковую установку, развернул в GAE, установил текущую версию по умолчанию, удалил старую версию, ... и все же безжалостная старая страница обслуживается .   -  person Iron Pillow    schedule 11.12.2012


Ответы (2)


Вы установили заголовки HTTP-кеша? Если это так, возможно, вы получаете результаты из какого-то промежуточного кеша, например из пограничного кеша GAE.

person dragonx    schedule 10.12.2012
comment
Думаю, в этом вы правы. Оглядываясь назад, я могу сказать, что мои проблемы начались после того, как я установил собственный домен, указывающий на мое приложение. Я отредактировал вопрос, чтобы предоставить больше информации. Итог: не могу понять, как отключить кеширование. - person Iron Pillow; 11.12.2012
comment
Похоже, вы установили cache-control и expires headers, а заголовок expires странный. Заголовки кеша будут специфичными для каждого URL-адреса, поэтому проверьте страницы, которые не обновляются. Если вы случайно установили длительный период кеширования для определенных страниц, вас могут облажать, пока не истечет срок действия этих кешей. Вам нужно будет изменить URL-адрес, чтобы получить к нему немедленный доступ. Итак, мои предложения: попробуйте изменить URL-адрес, попробуйте сравнить результаты из вашего домена и URL-адреса вашего приложения и убедитесь, что вы не портите заголовки кеша. - person dragonx; 11.12.2012
comment
Кроме того, вы настроили свой домен так, чтобы он указывал на определенную версию вашего приложения? - person dragonx; 11.12.2012
comment
Изменения касаются моей домашней страницы, поэтому на самом деле нет возможности изменить URL-адрес. На тот момент, когда я настраивал домен, была только одна версия приложения. Не помню, указывал ли я конкретную версию. Во всяком случае, версия приложения, существовавшая на момент создания домена, была удалена. Я думаю, что сейчас у меня единственный вариант - загрузить исходный код в новый проект GAE (на основе новой учетной записи Gmail), перенаправить домен на новый проект (возможно ли это?) И надеяться на лучшее. - person Iron Pillow; 11.12.2012
comment
На самом деле, я думаю, скорее всего, ваш новый main.py не делает то, что вы думаете. Вы действительно отлаживали его, чтобы убедиться, что он служит тому, что, по вашему мнению, должен служить? Например, измените main.py, чтобы он возвращал только Hello World. - person dragonx; 11.12.2012
comment
Вы абсолютно правы. Попробовав ваше предложение hello world, я смог найти ошибку в написанном мной коде. Ты мой герой. :-) - person Iron Pillow; 11.12.2012

Посмотрите на "версию" и "журналы администратора", возможно, вы обновляете неправильную версию, т.е. не https://appengine.google.com Также попробуйте без файлов cookie (файлы cookie иногда делают с обновлением странные вещи)

appcfg.py update . --no_cookies
person Community    schedule 11.12.2012