我的桌面计算机上的开发服务器运行的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个中的另一个)。他们提供了更新。但是,当我对新上传的文件进行更改时,这些更改未显示。因此,无论出现什么问题,它都会影响我的用户帐户下的所有应用程序。
答案 0 :(得分:1)
您是否设置了HTTP缓存标头?如果是这样,您可能会从某些中间缓存中获得结果,例如GAE的边缘缓存。
答案 1 :(得分:1)
查看“版本”和“管理日志”,您可能正在更新错误的版本,即不是默认版本 https://appengine.google.com 也可以在没有cookie的情况下尝试(Cookies有时会为更新做些奇怪的事情)
appcfg.py update . --no_cookies