2012-10-27 3 views
2

python 파일을 제공하도록 mod_wsgi를 설정했습니다. 실제로 그렇습니다.웹 페이지에서 mod_wsgi 오류가 표시됩니다.

그러나 들여 쓰기 오류와 같은 .py 파일에 구문 오류가있는 경우 페이지가로드 될 때 서버 오류가 발생하고 오류가 발생한 이유 (예 : 들여 쓰기)가 로그에 있어야합니다.)

mod_wsgi 페이지에 오류를 표시하는 것이 가능합니까 (적어도 개발자 환경의 경우)?

아마도 php의 error_reporting 옵션과 비슷한 것일 수 있습니다.

답변

3

완전하지 않습니다. 당신이 얻을 수있는 가장 가까운입니다

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

이 실제로 WSGI 서버 수준까지 전파되는 요청의 실행 중에 발생하는 오류를 만 할 것입니다.

WSGI 스크립트 자체를로드 할 때 오류가 발생하거나 프레임 워크가 사용되고 프레임 워크 자체에서 오류를 발견하여 500 페이지로 바뀌는 경우에는 작동하지 않습니다. 후자의 경우 프레임 워크에는 대개 디버그 페이지를 활성화하는 방법이 있습니다.

이제 프레임 워크를 사용하지 않고 원시 WSGI 스크립트를 작성하는 것처럼 들립니다. 파이썬 웹 프로그래밍에 익숙하지 않다면 raw WSGI를 쓰는 것은 추천하지 않는다. 따라서 대신 프레임 워크를 사용하고 기능으로 원하는 것을 제공해야합니다.

1

약간의 작업으로 (그리고 다른 스택 오버플로 제공자 덕분에) 브라우저에 좋은 오류 정보를 얻을 수 있습니다. 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] 
관련 문제