空白页面但无错误 - Python Appengine

0 投票
3 回答
2422 浏览
提问于 2025-04-16 09:18

我在我的appengine Python网站上遇到了偶尔出现的空白页面。通常,这种情况发生在启动新进程或清空缓存时。会先显示一页空白的白色页面,之后一切就正常了。

这基本上和这里的错误是一样的:

http://groups.google.com/group/google-appengine/browse_thread/thread/c072383dc970e450

不过,我已经仔细检查过我的Python文件,确保代码是正确的(以下是复制粘贴的内容):

def main():
    run_wsgi_app(application)

if __name__ == "__main__":
    main()

这是日志中生成空白页面的一个示例响应:

01-02 04:46AM 48.539 / 200 188ms 570cpu_ms 383api_cpu_ms 0kb

Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.19 Safari/534.13,gzip(gfe),gzip(gfe),gzip(gfe) 86.164.42.252 - tjcritchlow [02/Jan/2011:04:46:48 -0800] "GET / HTTP/1.1" 200 124 - "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.19 Safari/534.13,gzip(gfe),gzip(gfe),gzip(gfe)" "www.7bks.com" ms=188 cpu_ms=570 api_cpu_ms=383 cpm_usd=0.016028 I 01-02 04:46AM 48.724 Saved; key: appstats:008500, part: 82 bytes, full: 92081 bytes, overhead: 0.001 + 0.005; link: http://www.7bks.com/stats/details?time=1293972408543

欢迎任何建议,看看我该如何进一步调试或解决这个问题。

我有几个不同的Python文件,这里是我app.yaml中的处理程序。但我已经检查过所有文件,确保它们的底部都有正确的name代码。

handlers:

- url: /admin/.*
  script: admin.py
  login: admin

- url: /googleanalytics/
  script: googleanalytics.py
  login: admin

- url: /cleanupsessions/
  script: cleanupsessions.py
  login: admin

- url: /robots.txt
  static_files: robots.txt
  upload: robots.txt

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

- url: /images
  static_dir: images

- url: /css
  static_dir: css

- url: /jquery
  static_dir: jquery

- url: /.*
  script: 7books.py

error_handlers:
  - file: customerror.html

问题可能出在我导入的某个库上吗?我应该检查所有库,确保它们都有name代码吗?

3 个回答

0

确保你的Python代码缩进是一致的。比如,要么使用制表符(Tab),要么使用4个空格,或者2个空格……不要在同一个函数里混用这些缩进方式。这对我来说解决了问题!这点很烦人,因为对人来说,制表符和4个空格看起来是完全一样的。

0

我刚刚解决了这个问题,之前真是烦死我了。

我把我的脚本文件改名成了'site.py',结果把它改回'main.py'后,一切问题都解决了。

我猜可能是因为Python自带的'site'模块在我的类路径中优先级更高,所以我的'site.py'文件被覆盖了。如果有人知道更多的情况,请在这里留言。

1

关于空白页面的问题,调试起来可能会有点复杂,除非你能把问题缩小到你代码的某个特定部分或者GAE(Google App Engine)堆栈。

Appstats是GAE的一个工具,它会在每个网页请求中插入(作为WSGI中间件),记录性能、调试和其他一些请求信息,并把这些信息汇总到一个管理界面,你可以通过GAE的管理网站访问它。这个工具可以帮助你查看错误的追踪信息,并监控你的网站错误(安装了appstats后,错误会在请求列表中以黄色框的“E”标记显示)。

首先,你应该按照以下链接的说明设置Appstats:

http://code.google.com/appengine/docs/python/tools/appstats.html

这个链接会告诉你关于每个请求的很多有用信息,特别是那些出错的请求,包括一个Python追踪信息,里面会说明出了什么问题,以及在调用堆栈的哪个地方出错,这就像你在本地使用Google App Engine Launcher或者Python CLI或iPython调试代码时看到的那样。

然后,下次你看到空白页面时,去你的管理页面或者appstats,登录后,你就会看到一个追踪信息,告诉你代码的哪个地方出了问题。

很可能只是某个地方提前返回了结果,或者代码中有未处理的边缘情况,但在你没有appstats查看请求日志和调试错误之前,也可能是其他意外的原因。

一旦你安装了Appstats并重现了这个问题,把追踪信息粘贴到上面(记得去掉追踪信息中可能包含的任何用户信息,比如密码),我会根据这些信息来调整我的回答。

撰写回答