App Engine忽略了我的源代码更新和我的app.yaml文件

时间:2012-12-10 10:36:23

标签: google-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进行一些例行更改(从而创建“新”版本)之后,问题就开始了。 “new”版本在我的localhost机器上运行良好,但在部署到GAE后,它的更改不会通过Big Internet提供。相反,GAE服务由“old”main.py计算的页面。有时退出GAE启动器并重新启动有帮助,但现在(小时)暂时没有工作。即使机器重新启动。

因此,为了进行实验,我将app.yaml的最后一行更改为:

script: main2.py

我重新部署到GAE,当我点击我的网站时,我得到500错误 - 正如预期的那样 - 因为项目中没有main2.py文件。

所以我将“new”main.py磁盘文件重命名为main2.py,重新部署到GAE,500错误消失了 - 也正如预期的那样。

但是这里变得奇怪。这个刚刚上传的main2.py文件是“new”main.py,只是重命名。但是,GAE提供的页面是由“old”main.py!

计算的页面

我已清除浏览器缓存。我甚至发布了一个尘土飞扬的Opera副本,它从未见过这个项目所服务的URL,而且它也显示了“old”main.py创建的过时页面内容。

我使用App Engine已有几年了。一周前我从未遇到过这样的麻烦。我最近将Launcher更新到1.7.3(Mac OS X 10.6.8)。起初我以为我的启动器在某种程度上已经损坏,但app.yaml实验表明它在GAE本身就是一些东西。我的GAE启动器中有很多项目,真的不想干净安装。

我敢打赌,当我听到你的想法时,我会感到尴尬,但我已经没想到了。

ADDENDUM :用户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服务并关闭缓存。 : - (

ADDENDUM#2:我将我的文件作为其他应用程序上传(即我允许的10个中的另一个)。他们提供了更新。但是,当我对新上传的文件进行更改时,这些更改未显示。因此,无论出现什么问题,它都会影响我的用户帐户下的所有应用程序。

2 个答案:

答案 0 :(得分:1)

您是否设置了HTTP缓存标头?如果是这样,您可能会从某些中间缓存中获得结果,例如GAE的边缘缓存。

答案 1 :(得分:1)

查看“版本”和“管理日志”,您可能正在更新错误的版本,即不是默认版本 https://appengine.google.com 也可以在没有cookie的情况下尝试(Cookies有时会为更新做些奇怪的事情)

appcfg.py update . --no_cookies