Mod wsgi 在网页上显示mod_wsgi错误

Mod wsgi 在网页上显示mod_wsgi错误,mod-wsgi,error-reporting,Mod Wsgi,Error Reporting,我已经设置了mod_wsgi来提供python文件。的确如此 但是,如果在.py文件上有语法错误(例如缩进错误),则在加载页面时会出现服务器错误,并且必须转到日志以查看错误发生的原因(即缩进) 是否可以让mod_wsgi在页面上显示错误(至少对于dev环境) 可能与php的错误报告选项类似。不完全相同。你能得到的最接近的是: 这仅适用于在执行请求期间发生的错误,这些错误实际上会传播到WSGI服务器级别 它不适用于WSGI sript本身加载中的错误,或者在使用框架且框架本身捕获错误并将其转换为

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

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

是否可以让mod_wsgi在页面上显示错误(至少对于dev环境)


可能与php的错误报告选项类似。

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

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

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

现在,听起来您并没有使用框架,而是在编写原始WSGI脚本。如果您是Python web编程新手,建议不要编写原始WSGI。因此,改用一个框架,它将为您提供您想要的功能。

只需做一点工作(非常感谢其他堆栈溢出贡献者!),您就可以在浏览器中获得良好的错误信息。当然,您的WSGI“根”位于“应用程序”定义中:

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]