Djangoでprocessがなぜか二重に起動してしまう

890 views
Skip to first unread message

shinriyo

unread,
Nov 5, 2014, 7:40:40 PM11/5/14
to djan...@googlegroups.com
お世話になります。

Django 1.6系環境でrunserverのプロセスについて質問があります。

runserverにて起動すると、
ctl+cで停止した後も、別のプロセスがバックグラウンドで動いてしまいます。

runserverをすると2つのプロセスが同時に立ち上がっているようです。

プロセスを確認してみますと、Pythonが2つ起動しておりました。

22511 pts/5 S+ 0:00 python manage.py runserver 0.0.0.0:8080
22512 pts/5 Sl+ 0:00 /usr/local/Python2.7.5/bin/python manage.py runserver 0.0.0.0:8080

この現象が起こるのを防ぐことはできますでしょうか。

何卒、よろしくお願いします。

tokibito

unread,
Nov 10, 2014, 3:12:34 AM11/10/14
to djan...@googlegroups.com
岡野です。

>runserverをすると2つのプロセスが同時に立ち上がっているようです。
これはrunserverのautoreload(ソースコードを変更した際に再読込)の機能によるもので、正常です。
runserverコマンドのプロセスと、HTTPの待受をするサーバースレッドの2つになります。

$ ps f
25374 pts/5    Ss     0:00 /bin/bash
25447 pts/5    S+     0:00  \_ python manage.py runserver
25448 pts/5    Sl+    0:00      \_ /home/tokibito/tmp/venv/bin/python manage.py runserver

runserverコマンドに --noreload オプションを指定すると、再読込されずプロセスは1つになります。

>ctl+cで停止した後も、別のプロセスがバックグラウンドで動いてしまいます。
autoreloadの機能がサーバースレッドを終了できていなさそうです。
アプリケーションコード内で外部サーバーや各種外部サービスへ接続している場合、
通信が終わるまでプロセスが終了しないような挙動をするかもしれません。
同じ環境でシンプルなDjangoのプロジェクトを作成し、同様の動きになるかどうか、試してみてはいかがでしょうか。

2014年11月6日木曜日 9時40分40秒 UTC+9 shinriyo:
Reply all
Reply to author
Forward
0 new messages