5

Fedora 14でCherokeeを実行する開発サーバーをセットアップし、uWSGIを使用してWSGIアプリケーションとインターフェイスしました。

アプリケーションが最初のリクエストでヒットすると、次のようなプロセスが生成されます。

from subprocess import Popen
Popen(['bash'])  # bash is just an example; the problem happens with all programs

最初のリクエストは完了するのに10〜15秒かかります(後続のリクエストは1秒未満かかります)。Popenオブジェクトを作成しない場合、最初のリクエストは約2〜3秒で完了します。Pythonシェルから同じPopenリクエストを実行すると、瞬時に実行されます。

この動作の原因は何でしょうか?明らかな何かを見逃したことがありますか?

4

2 に答える 2

10

--close-on-exec

そうしないと、新しいプロセスがソケットを継承します

(これはUNIXの標準的な動作です)

于 2011-02-27T06:08:21.170 に答える
3

Pythonコードでこれを処理したい場合は、close_fds = TrueをPopen()に渡すオプションがあります。そうすると、フォークされたプロセスによってソケットが継承されなくなります。

于 2011-09-22T20:10:30.213 に答える