【发布时间】:2012-11-27 18:19:29
【问题描述】:
我的 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 进行了一些常规更改(从而创建了“新”版本)之后,问题就开始了。 “新”版本在我的 localhost 机器上运行良好,但在我部署到 GAE 后,它的更改无法通过 Big Internet 提供。相反,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)。起初我以为我的 Launcher 不知何故损坏了,但 app.yaml 实验表明它是 GAE 本身的东西。我的 GAE 启动器中有很多项目,我真的不想进行全新安装。
我敢打赌,当我听到你的想法时,我会感到尴尬,但我已经没有想法了。
附录:用户dragonx建议缓存可能是问题的根源,现在我想起来了,确实是在我为应用程序配置了一个自定义域之后开始的,使用谷歌域名服务。但是,根据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 个应用程序中的另一个)。他们提供更新。但是,当我对新上传的文件进行更改时,这些更改并没有出现。因此,无论出现什么问题,它似乎都会影响我用户帐户下的所有应用。
【问题讨论】:
-
将 app.yaml 中的版本改为 2. Deploy。从控制面板将服务的默认版本更改为 2。删除 1。问题可能会消失。
-
好主意——但是,唉,它并没有解决问题。
-
尝试删除然后从启动器中读取程序。
-
好主意。这也没有奏效。我从启动器中删除了应用程序,增加了 app.yaml 中的版本,将应用程序重新添加到启动器中,部署到 GAE,将当前版本设为默认,删除了旧版本,......仍然提供无情的旧页面.
标签: google-app-engine app.yaml