1

奇妙な問題。次の 2 つの方法で実行する Django サイトがあります。

  1. apache/wsgi 経由:80 通常
  2. on python manage.py runserver:8000 テスト時

wsgi を使用すると、すべて正常に動作しますがrunserver、エラー ページ ( debug = True) に到達すると、ページが途中まで読み込まれ、トレースバックを表示せずに永遠に読み込まれ続けます。

「途中」のロードに関する注意事項:

  • 同じエラーでまったく同じポイントにロードされているようです
  • 別のエラーの場合、別のポイントになります (Firebug によると、トレースバックの別の部分と別のファイル サイズの両方)。
  • 別のブラウザーの場合、別のポイントに読み込まれます (ページがリロードされる場合、一貫して同じポイント)。
  • 例: トレースバックの最初のステップの 'local vars' に読み込まれる ValueError がありrequestます。Firefox では一貫して までロードされますSSH_CONNECTIONが、Chrome では までロードされSHELLます (Firefox では正常にロードされます)。
  • サーバーを再起動しても効果はありません。

通常の (エラーのない) ページは正常に読み込まれます。コンソールには特別なことは何も表示されず、コード 500 のリクエストだけが表示されます。

4

2 に答える 2

1

pdb.set_trace()コードのどこかにがあるようです。__unicode__エラーページのレンダリング中に呼び出されているメソッドまたは何かで推測します。これは、開発サーバーからの出力がバッファリングされるという概念に基づいています。

もう 1 つの (非常に可能性の高い) 可能性は、無限に再帰的な呼び出しがどこかで行われていることです (おそらく前述のset_trace状況と同様の場所で) RuntimeError: maximum recursion depth exceeded

例えば:

import time

def foo():
    time.sleep(.2)
    bar()

def bar():
    foo()

bar()

それ以外の場合は、意図的に実行しない限り、Python プログラムをただハングさせるのは非常に困難です。

于 2013-06-09T00:35:32.383 に答える
1

https://code.djangoproject.com/ticket/15132を参照してください。

回避策は、「django-extensions」と werkezeug をインストールし、サーバーを で起動することmanage.py runserver_plusです。この強化された開発サーバーは、他の優れた機能の中でもデフォルトでトレースバックを表示します。

于 2015-08-18T21:06:38.137 に答える