1

ここで、ネットを検索しても解決策がわからないという奇妙な問題があります:/

Apache を mpm-prefork から mpm-worker に切り替えた後、(Django) Python WSGI アプリケーションでサブプロセスを使用すると、数時間ハングした後に次の例外が発生します。

IOError at /
[Errno 4] Interrupted system call

問題の呼び出しは次のとおりです。

out = check_output(['sudo', 'quota', user_id])

ここで、check_output は Python 2.7 からのこの関数のバックポートですが、Debian Squeeze リポジトリから Python 2.6 を使用しています。

実際、プロセスは実行されているように見えますが、終了します。

ps aux | grep quota
root     15378  0.0  0.0  21864  1176 ?        S    02:34   0:00 sudo quota ...SOME_ID...
root     15379  0.0  0.0      0     0 ?        Z    02:34   0:00 [quota] <defunct>

Apache の構成は、WSGIScriptAlias といくつかのディレクトリ ディレクティブを設定するだけです。

明らかなことを見逃していますか?

セバスチャンに挨拶

解決策: Debian 6 に同梱されている sudo 1.7.4-4のバグで あることが判明しました。ホームページから最新の 1.8.x .deb をインストールすることで解決しました。

4

1 に答える 1

0

Python 2.7.2 にはバグがあり、サブ インタープリターで fork が失敗します。設定してみてください:

WSGIApplicationGroup %{GLOBAL}

そのWSGIアプリケーションのApache構成で、メインインタープリターの使用を強制します。

根本的な問題の Python バグ レポートは次のとおりです。

http://bugs.python.org/issue13156

于 2011-12-30T21:21:51.600 に答える