2011-10-19 9 views
5

ovlと呼ばれるscipy.stats.stats(scipyバージョン0.9.0)に大きく依存するパッケージへのdjango-powered(1.3)インターフェイスの作成中です。 。初期の開発段階では、djangos独自の開発サーバーを使用していましたが、これは問題ありませんでした。 apache debian/2.2.9とmod_wsgi 3.3を使用して配備した後は、深刻な問題が発生します。配備後のdjangoでのscipy.stats.statsの使用

ブラウザに読み込もうとしているすべてのビューが読み込みを開始し、5分(タイムアウトまで)、500ページが表示されます。 scipyをインポートするだけですが、ではなくはscipy.stats.statsまたはscipy.statsを利用できます。これは驚きではありません。 scipyののinit .pyの文書では、サブパッケージstatsを明示的にインポートする必要があると記載されています。しかし、同じことがdjango(django-shellののdjangoシェルでインポート)のサブパッケージclusterについては何も問題なく実際にdir(scipy)に現れます。はipython(0.10 .2) - セッション、私はちょっと期待されているように、表示されません。

コマンドの場合dir(scipy);通常のipythonシェル(564文字列、サブパッケージなし、cluster)のウェブ(サブパッケージclusterを含む568文字列のリスト)から来て、djangoシェルで驚きの結果を返します。 djangoシェルのscipyには、clusterstatsのパッケージを含む570の属性があります。

もう1つのことは、ovlパッケージをインポートしたままで、scipy.statsのインポートを(アプリケーション自体のファイルの1つではなく)少し離れたところに保ちながら、ときどきViewDoesNotExistエラーが表示されるビューモジュール内にメソッドインデックスが存在しないことは明らかです。どちらが私に、thisを思い出させる。

だから今は、これらのかなり醜いソリューションを考えています:それはDIR(scipyのダウンロード)に「通常は」表示され、scipy.statsを介してアクセス可能であると私ので、統計パッケージをインポートする

  • 編集scipyのダウンロードのinitを古いコードを使用できます。
  • scipyのダウンロードのSTATのサブパッケージをひったくりやしかし、私はこれらのソリューションを適用する際の消極的だ

(おそらく、シンボリックリンクを使用して)それから、通常のパッケージを作ります。ジャンゴ環境でscipyに表示される事実クラスタは私に少し心配です。私は多分これはウェブからログインするときにwww-dataユーザーであることと関係があると思ったが、それを確認する方法はわからない。

誰かがこれに遭遇しましたか?これの一部ですか? その他の有用な考えですか?

ああ、もう1つのdjangoデプロイメントです。

答えて

5

mod_pythonは、同じプロセスで複数のPythonインタプリタを使用する際に使用されます。 mod_wsgiでも同じことが起こっている可能性があります。これはよく動作しますが、一部の拡張モジュールはこれをサポートしていません。 scipy.statsはおそらくそのような拡張モジュールをインポートしています。 mod_pythonのscipy.statsに関するscipyメーリングリストについても同様の報告がありました。 mod_wsgiのドキュメントを参照して、同じプロセスで複数のインタプリタを使用しないように設定できるかどうか、またはアプリケーションごとにプロセスごとに1つのインタープリタを使用する異なるデプロイメント戦略を見つけてください。

+2

私はグーグルで、[この質問](http://code.google.com/p/modwsgi/wiki/ApplicationIssues#Python_Simplified_GIL_State_API)と解決策と[説明](http:// code.google.com/p/modwsgi/wiki/ApplicationIssues#Python_Simplified_GIL_State_API)。 '<ディレクトリは/ usr/local/www /のWSGI-スクリプト> \t WSGIApplicationGroupの%{GLOBAL} \t注文ができるように置くことによってそれを解決し、 \tは私のhttpd.conf内のすべての \t 'から許可拒否。 2行目は、サブインタプリタについて何かする行です。 – koekiezorro

1

私のdjangoアプリケーションでscipy.statsを使用すると、この問題も発生します。 django manage.py runsever環境では、私のアプリは問題なく正しく実行されます。しかし、私がmod_pythonを使ってapacheサーバーにアプリをデプロイすると、アプリを入力できなくなり、ブラウザはタイムアウトまでロードを維持します。私のアプリケーションでインポートされたすべてのscipy.statsステートメントを削除した後、問題は解決され、私はapacheサーバーで自分のアプリケーションを実行できます。