0

Django、Apache、WSGI、MySql などの経験があり、Lion を実行している別の OS X コンピュータでこの環境をセットアップして正常に動作させています。Django セッション バックエンドは db であり、セッション ミドルウェアとアプリの両方が設定で適切に有効になっています。サイト ビューの最初のリクエスト中に、request.session キー/値を設定しました。これは、今回初めて正常に機能します。その後のビューでは、キー/値が存在するかどうかを確認すると、サーバー レベルの 500 エラーが発生し、デバッグ モードがオンになっていても、Python インタープリターが完全なスタック トレース例外を生成しません。Apache ログは次のメッセージを生成します...

[Mon Apr 16 14:26:22 2012] [notice] Apache/2.2.21 (Unix) DAV/2 mod_wsgi/3.3 Python/2.7.1 mod_ssl/2.2.21 OpenSSL/0.9.8r configured -- resuming normal operations
[Mon Apr 16 14:26:27 2012] [info] mod_wsgi (pid=2362): Create interpreter 'snap.joe|'.
[Mon Apr 16 14:26:27 2012] [info] [client 127.0.0.1] mod_wsgi (pid=2362, process='snap', application='snap.joe|'): Loading WSGI script '/var/www/venvs/snap_env/snap/wsgi/wsgi.py'.
[Mon Apr 16 14:26:32 2012] [error] [client 127.0.0.1] Premature end of script headers: wsgi.py
[Mon Apr 16 14:26:33 2012] [notice] child pid 2362 exit signal Bus error (10)

MySQL db テーブルの django_session 行が session_data とともに適切に追加されていること、および最初のリクエスト後にブラウザに設定された Cookie に適切な/一致する session_id が含まれていることを確認しました。既存のセッション コードの直前に単純な request.session.flush() を追加すると、セッションには何もないため、明らかにエラーを回避できます。もう 1 つ、セッション キー/値ストアに追加する値は Django QuerySet オブジェクトです。繰り返しますが、これはライブの CentOS サーバーと別の Mac OS X Lion マシンで動作しています (ただし、2.7 ではなく Python 2.6 を実行しています)。

アイデアはありますか?どうもありがとう!

4

2 に答える 2

0

文書化された理由を参照してください:

http://code.google.com/p/modwsgi/wiki/FrequentlyAskedQuestions#Apache_Process_Crashes

考えられる回避策については、さらにリンクをたどってください。

つまり、mod_pythonを同時に使用して、共有ライブラリのバージョンの競合、またはサブインタープリターで機能しないPythonの拡張モジュールを共有できます。

これがそのApache上のPythonサイトのみである場合は、次のように設定します。

WSGIApplicationGroup %{GLOBAL}

1つの潜在的な迅速な解決策のために。

于 2012-04-16T20:25:56.820 に答える
0

いくつかの考え:

1) 同じバージョンのモジュールを実行していますか? Django は最近更新されたばかり (1.4) であるため、pip インストールを行ってバージョンを指定しなかった場合、開発には新しいバージョンがあり、プロダクションには古いバージョンがある可能性があります。

2) manage.py runserver だけを使用してこれをテストできますか? 私の疑いは、それがapache構成に関係していることです(したがって、runserverで正常に動作する場合、それは問題がapacheにあることを意味します).

于 2012-04-16T19:00:10.687 に答える