У меня приложение 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 разрешенных мне файлов). Они обслуживали обновления. Однако, когда я внес изменения во вновь загруженные файлы, эти изменения не появились. Следовательно, похоже, что независимо от проблемы, она влияет на все мои приложения под моей учетной записью.