【问题标题】:Blank Page But No Error - Python Appengine空白页但没有错误 - Python Appengine
【发布时间】:2011-01-02 12:57:19
【问题描述】:

我的 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] “获取 / HTTP/1.1" 200 124 - "Mozilla/5.0 (Windows;U;Windows NT 6.0;en-US) AppleWebKit/534.13(KHTML,像 Gecko) 铬/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 我 01-02 04:46AM 48.724 已保存;键:appstats:008500,部分:82 字节,完整:92081 字节, 开销:0.001 + 0.005;关联: http://www.7bks.com/stats/details?time=1293972408543

欢迎就如何进一步调试或解决此问题提出任何建议。

我有几个不同的 python 文件,这是我的 app.yaml 中的处理程序。但我已经检查了所有这些以确保它们在底部都有正确的 if 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 代码吗?

【问题讨论】:

  • 当您查看来自 Appstats 的信息时,您期望运行的代码是吗?
  • 我对 Appstats 不太熟悉 - 我怎么看?看来我只能看到由 URL 运行的不同类型请求的数量?我如何将其转化为检查正在运行的代码?谢谢

标签: python google-app-engine


【解决方案1】:

关于空白页问题,调试可能会有点麻烦,除非您可以将问题缩小到特定的代码片段或 GAE 堆栈。

Appstats 是一个用于 GAE 的工具,它连接到每个 Web 请求(作为 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 并重现问题后,粘贴上面的回溯(请记住删除回溯中可能包含的任何用户信息,例如密码),我会修改此响应以匹配。

【讨论】:

    【解决方案2】:

    在经历了很多挫折之后,我才解决了这个问题。

    我已将我的脚本处理程序重命名为“site.py”,将其重命名回“main.py”解决了所有问题。

    我最好的猜测是股票 python 'site' 模块在我的 site.py 的类路径上占主导地位。如果有人知道更多,请在此处发表评论。

    【讨论】:

      【解决方案3】:

      确保你的 python 缩进是一致的。例如,要么使用制表符,要么使用 4 个空格或 2 个空格……不要在同一个函数中混合使用它们。这为我解决了!这很烦人,因为一个制表符和 4 个空格在人类看来完全一样。

      【讨论】:

        猜你喜欢
        • 2011-04-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-04
        • 2017-09-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多