3

Python の操作はまったく初めてです (PHP のバックグラウンドがあります)。

私は PHP のエラー処理とロギングに慣れています。それでも、Python を使用すると、動作するはずの非常に単純なスクリプトで 500 エラーが発生します。

Python でエラー処理を有効にする方法はありますか? 500 エラーは、何かが正しくないことを除いて、ほとんど何も教えてくれません。

これに対する答えをネットで調べましたが、非常に明白なはずの解決策が見つかりません。

4

1 に答える 1

7

あなたの質問は、エラーまたは例外を表示する方法を尋ねています (もちろん、これらのエラーも処理する必要がありますが、その処理方法ではありません)。PHP の背景から、Python500 errorで Web プログラミングを行っていることを暗示しているようです。

Python でこれを行う方法はたくさんありますが、私がよく使う方法をいくつか紹介します。

  1. 本番環境ではloggingモジュールを使用してエラーをログに記録します。Sentry [ソースコードはこちら]など、役立つツールがたくさんあります。ロギングの詳細については、こちらをご覧ください。
  2. 開発中は、スクリプトを実行してスクリプトpython -m pdb myscript.pyをデバッガー モードで開始し、c( ) を入力してエラーが発生するまでcontinueスクリプトを続行すると、インタラクティブな PDB (Python デバッガー) プロンプトで状態を確認できるようになります。
  3. 開発中、WSGI に依存するフレームワーク (またはスクリプト) を使用している場合は、グラフィカルでインタラクティブな JavaScript ベースのブラウザー内ヘルパーWerkzeugを使用できます。これにより、コール スタックのすべてのレベルでデバッグできます。

そして、最も明白なものを指摘すると、Python インタープリターは、プログラムがクラッシュした場合にスタック トレースを出力します。たとえば、次のようになります。

→ python -c 'pprint "hello"'
  File "<string>", line 1
    pprint "hello"
                 ^
SyntaxError: invalid syntax


# print.py is just one line: print 'hello world'
→ python print.py 
  File "print.py", line 1
    pprint 'hello world'
                       ^
SyntaxError: invalid syntax

アップデート:

フレームワークを使用していないようで、ホストの背後にいるように見えますが、ホストの外観からは、Python スクリプトをどのように提供しているかが正確にわかりません。ここで、必要なのはブラウザーでスタック トレースを確認することだけなので、ホストが使用するものに基づいて次の操作を実行できます。

スクリプトが CGI 経由でサーバーの背後で実行されている場合は、Python cgitbモジュールを使用して HTML ページにスタック トレースを出力するだけです。

import cgitb
cgitb.enable()

ただし、サインアップした共有ホスティングがmod_pythonApache で使用されている可能性が非常に高いため、Apache 構成ファイルでオンPythonDebugにすると、ブラウザーにスタック トレースが出力されます。

PythonDebug On

Apache with についてはmod_wsgi、ここで要約するよりも優れた記事が書かれています: mod_wsgi Debugging Techniques

于 2012-10-29T07:58:35.220 に答える