2

Pythonファイルを提供するようにmod_wsgiを設定しました。確かにそうです。

ただし、.pyファイルに構文エラー(インデントエラーなど)がある場合は、ページの読み込み時にサーバーエラーが発生し、ログに移動してエラーが発生した理由(インデントなど)を確認する必要があります。

mod_wsgiにページにエラーを表示させることは可能ですか(少なくとも開発環境では)?

おそらく、phpのerror_reportingオプションに似たものです。

4

2 に答える 2

3

完全ではありません。あなたが得ることができる最も近いものは:

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

これは、WSGIサーバーレベルまで実際に伝播される要求の実行中に発生するエラーに対してのみ実行されます。

WSGI sript自体のロード中のエラー、またはフレームワークが使用されていてフレームワーク自体がエラーをキャッチして500ページに変換する場合は機能しません。後者の場合、フレームワークには通常、デバッグページを有効にする手段があります。

さて、あなたはフレームワークを使用していないようですが、生のWSGIスクリプトを書いているようです。Python Webプログラミングを初めて使用する場合は、生のWSGIを作成することはお勧めしません。したがって、代わりにフレームワークを使用してください。フレームワークは、機能として必要なものを提供するはずです。

于 2012-10-27T22:45:45.163 に答える
2

少しの作業で(そして他のStack Overflowの貢献者に感謝します!)、ブラウザに適切なエラー情報を取得できます。もちろん、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]
于 2017-12-31T06:47:21.550 に答える