3

I'm completely new to working with Python (I have a PHP background)

I'm used to PHP's Error Handling and Logging. Yet, with Python I'm getting a 500 Error on a very simple script that should work.

Is there a way to turn on Error Handling with Python? As 500 Error doesn't tell me much of anything, except that something is not right.

I have looked on the net for an answer to this, but I'm not finding a solution to what should be very obvious.

4

1 回答 1

7

您的问题是询问如何查看错误或异常(而不是如何处理,尽管您当然也需要处理这些错误),并且从500 errorPHP 背景来看,这似乎暗示您正在使用 Python 进行 Web 编程。

在 Python 中有很多方法可以做到这一点,以下是我倾向于使用的一些方法:

  1. 在生产中使用logging模块来记录错误。有很多工具可以帮助你,比如Sentry [这里的源代码]。您可以在此处阅读有关日志记录的更多信息。
  2. 在开发中,运行您的脚本,python -m pdb myscript.py该脚本将以调试器模式启动您的脚本,然后输入c( continue) 继续执行脚本,直到出现错误,现在您将能够在交互式 PDB(Python 调试器)提示符中看到状态。
  3. 在开发中,如果您使用依赖于 WSGI 的框架(或您的脚本),您可以使用基于图形的交互式 JavaScript 浏览器内帮助程序Werkzeug,它允许您在调用堆栈的每个级别进行调试。

而且,要指出最明显的一点,如果程序崩溃,Python 解释器将打印出堆栈跟踪,例如:

→ python -c 'pprint "hello"'
  File "<string>", line 1
    pprint "hello"
                 ^
SyntaxError: invalid syntax


# print.py is just one line: print 'hello world'
→ python print.py 
  File "print.py", line 1
    pprint 'hello world'
                       ^
SyntaxError: invalid syntax

更新:

似乎您没有使用任何框架,并且您在一个主机后面,从它的外观来看,它并没有告诉您它是如何为您的 Python 脚本提供服务的。现在,由于您只想在浏览器中查看堆栈跟踪,因此您可以根据主机使用的内容执行以下操作:

如果您的脚本通过 CGI 在服务器后面运行,您需要做的就是使用 Python cgitb模块在 HTML 页面上打印堆栈跟踪:

import cgitb
cgitb.enable()

但是,您注册的共享主机很可能mod_python与 Apache 一起使用,因此PythonDebug在 Apache 配置文件中打开应该会在浏览器中打印堆栈跟踪:

PythonDebug On

对于 Apache mod_wsgi,有一篇比我在这里可以总结的更好的文章:mod_wsgi 调试技术

于 2012-10-29T07:58:35.220 回答