0

我是 Python 新手,查看错误消息时遇到问题:我有一个 javascript 函数进行如下调用:

$.getJSON('test.py', {data: 'somedata'}, function(return){alert(return.echo)})

并且一个 test.py 文件成功地回显了该消息:

def application(environ, start_response):
  import json
  status = '200 OK'
  response_headers = [('Content-type', 'application/json')]
  start_response(status, response_headers)
  data = environ['QUERY_STRING'].split('=')[1])   
  return json.dumps({'echo': data}, separators=(',',':'))

注意:我刚刚从内存中重新键入了该脚本,所以如果您发现语法错误,那是我键入错误,基本脚本工作正常。

如果我通过呼叫运行页面,我会收到警报,然后如果我访问 Chrome 中的网络选项卡,我会看到

Request URL:http://localhost/test.py?data=somedata
Request Method:GET
Status Code:200 OK

在预览和响应选项卡上,我看到:

{"echo":"testdata"}

但是,如果我随后在脚本中抛出一个实际错误(在这个学习期间经常发生这种情况!)并在 Chrome 中测试页面,网络选项卡会显示正在进行的调用

Request URL:http://localhost/test.py?data=somedata
Request Method:GET
Status Code:500 Internal Server Error

Query String Parameters: (view URL encoded)
    data:'somedata'

但是,如果我点击预览,它会显示:

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, you@example.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Apache/2.2.21 (Unix) DAV/2 mod_wsgi/3.3 Python/2.6.7 Server at localhost Port 80

我的问题是是否可以使用此窗口显示堆栈跟踪或任何有助于我诊断问题的信息。目前,我正在通过反复试验进行所有调试,除了热爱 Python 的每一秒。

有人能指出我正确的方向吗?

编辑这个页面:

http://code.google.com/p/modwsgi/wiki/DebuggingTechniques

在“错误捕获中间件”标题下有一个解决方案,但他们的示例对我不起作用。

4

1 回答 1

1

尝试编写您的代码以容忍没有给出 QUERY_STRING。如果没有,以下将失败。

data = environ['QUERY_STRING'].split('=')[1])

一般来说,最好使用某种框架来确保像这样的小事情不会成为问题。

将 Flask 视为小型微框架的一个很好的例子。

于 2012-04-23T20:36:20.400 回答