0

Python の concurrent.futures モジュール (モジュール バージョン 2.1.3、Python バージョン 2.7.3) を使用しています。次の uwsgi 設定を使用して、4 つのワーカー プロセスで nginx を実行し、(正確には Ubuntu で) 4 つの uWSGI を起動デーモンとして実行しています (enable-threads が true であるため、GIL にアクセスでき、lazy が true であることに注意してください)。

virtualenv=[ path to venv ]
chdir=[ path to python project ]
enable-threads=true
lazy=true
buffer-size=32768
post-buffering=true
processes=4
master=true
module=[ my app ].wsgi
callable=wsgi_app
logto=/var/log/uwsgi.log
pidfile=[ replaced ]
plugins=python27
socket=[ replaced, but works fine ]

アプリ全体は正常に動作しますが、future プールで不足しているコンテキストが利用できないようです:私はFlaskを使用しています)失敗する前にかなりの時間ハングします。

ログ ファイルへの唯一のエントリは、HTTP 要求と、次のような一般的な wsgi 起動に関するものです。

WSGI application 0 (mountpoint='') ready on interpreter 0x11820a0 pid: 26980 (default app)

先物の実行をある程度可視化する方法、または先物プールで利用できない可能性のあるコンテキストを把握するにはどうすればよいですか?

それは理にかなっていますか?

前もって感謝します。

4

1 に答える 1

2

スレッドの代わりに ProcessPoolExecutor を使用している場合は、必ず uWSGI オプションに close-on-exec を追加してください。そうしないと、クライアント/Web サーバーとの接続ソケットが fork() の後に継承されます。

于 2013-02-20T08:42:13.210 に答える