2016-11-01 4 views
4

Djangoは、ユーザーの要求を処理するプロセスまたはスレッドを使用しますか?Djangoは、ユーザの要求を処理するためにプロセスやスレッドを使用しますか?

Djangoがスレッドを使用する場合、すべてのCPUコア(Pythonグローバルインタプリタロック)を使用することはできません.Djangoがプロセスを使用する場合、共有メモリを心配する必要はありません。

私はGoogleで情報を見つけようとしましたが、私が見つけた最大のものはDid django use thread to handle requests?です。これは答えではないようです。

答えて

3

DjangoはWSGIアプリケーションとして実行されます。その発生状況は、WSGIサーバー(たとえば、uWSGI、Gunicorn、mod_wsgi)によって決定されます。

Djangoのリクエストハンドラはスレッドセーフです。プロセスごとに任意の数のプロセス(ワーカーとも呼ばれます)とスレッドを使用するようにWSGIサーバーを構成できます。

前述のとおり、プロセスはより多くのメモリを使用しますが、スレッドはGILの影響を受けます。良い構成では、プロセス数とプロセスあたりのスレッド数のバランスが取れているはずです。

+0

並行して安全なプロセスプールを作成し、そのプールにビューから要求することはできますか? (私は私のコンピューティングを配布する必要があります)そのための方法はありますか? Pythonのmultiprocessing.pool(docで書かれた方法)は、一つのプロセスからしかアクセスできません。 –

+2

@SeregaLuchkoおそらくあなたは[Celery](http://www.celeryproject.org/)のようなタスクキューを探していますか? – knbk

+0

ありがとうございます!)) –

関連する問題