在网页上显示mod_wsgi错误

时间:2012-10-27 17:18:06

标签: mod-wsgi error-reporting

我已经设置了mod_wsgi来提供python文件。确实如此。

但是,如果.py文件中存在语法错误(例如缩进错误),则在页面加载时出现服务器错误,并且必须转到日志以查看错误发生的原因(即缩进)

是否有可能让mod_wsgi在页面上显示错误(至少对于开发环境)?

可能与php的error_reporting选项类似。

2 个答案:

答案 0 :(得分:3)

不完全。你能得到的最接近的是:

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

这仅适用于在执行请求时发生的错误,这些错误实际上传播到WSGI服务器级别。

对于加载WSGI sript本身的错误,或者在使用框架并且框架本身捕获错误然后转为500页的情况下,它将不起作用。在后者中,框架通常具有启用调试页面的方法。

现在,听起来您没有使用框架,但正在编写原始WSGI脚本。如果您不熟悉Python Web编程,则不建议使用原始WSGI。因此,请改用框架,它应该为您提供您想要的功能。

答案 1 :(得分:1)

通过一些工作(很多感谢其他Stack Overflow贡献者!),您可以获得良好的错误信息到浏览器。你的WSGI" root"坐在"应用程序"定义,当然:

def application(environ, start_response):
    import linecache, sys
    try:
        from cgi import parse_qs, escape      # Application starts here
        start_response('200 OK', [('Content-type', 'text/html'),]) #to here
        return ["Whatever application wants to say."] 

    except:                                   # Error output starts here
        exc_type, exc_obj, tb = sys.exc_info()
        f = tb.tb_frame
        lineno = tb.tb_lineno
        filename = f.f_code.co_filename
        linecache.checkcache(filename)
        line = linecache.getline(filename, lineno, f.f_globals)
        es = '''Error in {}, Line {} "{}": {}'''.format(filename, lineno, line.strip(), exc_obj)
        start_response('200 OK', [('Content-type', 'text/html'),])
        return [es]