8

私は誰かがこれを見たことを望んでいます-

私はdjango-compressorを実行しており、lesscセットアップを利用して、ファイルのCSSにlessをレンダリング/圧縮しています。開発サーバーから呼び出された場合は完全に機能しますが、apache + mod_wsgiの下で実行すると、常にエラーが返されます。

これをデバッグするために、フィルターがwww-dataユーザー(WSGIDaemonProcessディレクティブでwsgiユーザーとして定義されている)として呼び出す正確なコマンドを実行し、ファイルの読み取りと書き込みのアクセス許可を含め、正しく機能することを確認しました。それは操作しています。

また、そのシステムのcompressor / filters / base.pyのdjango-compressorコードをハッキングしました。呼び出されようとするコマンドは、proc.communicate()の呼び出し後に-6のリターンコードを取得しているようです。

私は誰かがこれを以前に見たことがあることを望んでいます-またはそれがいくつかのベルを鳴らしていることを願っています。このマシンでは、apache + mod_wsgiプロセスの外部(つまり、プロセスを開発サーバーとして実行する)でも正常に機能します。subprocess.Popen()の呼び出しをブロックしている可能性があるものがわかりません。

4

1 に答える 1

8

たまたまPython2.7.2を使用していますか?

そのバージョンのPythonでは、サブインタープリターのfork()が失敗するバグが発生しました。

http://bugs.python.org/issue13156

次のように設定して、WSGIアプリケーションをプロセスのメインPythonインタープリターで実行するように強制する必要があります。

WSGIApplicationGroup %{GLOBAL}

複数のDjangoアプリケーションを実行する場合は、影響を受ける1つだけにこの構成ディレクティブが適用されていることを確認する必要があります。そうしないと、すべてのDjangoアプリケーションが1つのインタープリターで実行されますが、これはDjango構成の動作が原因で不可能です。

于 2011-12-13T22:50:10.257 に答える