私はCtrlキー+Cとジャンゴmanage.py runserver
を終了すると、スレッドが適切にHTTPリクエスト仕上げを実行しているか、または、彼らは途中で中断されていますか?`manage.py runserver`とCtrl + C(ジャンゴ)
答えて
TLは、DRは、HTTP要求が停止されている実行しているときにCtrlキー + Cはジャンゴのdevのサーバー
私はあなたの質問は本当に面白いと検討している考えにヒットされています。私が作った
ビューは実行に10秒かかり、その後は応答を送信します。 あなたの行動をテストするために、Ctrl + Cを使用して開発サーバーmanage.py runserver
を停止し、結果を確認しました。
class TestView (generic.View):
def get (self, request):
import time
time.sleep(10)
response = HttpResponse('Done.')
return response
- ノーマル(10Sランタイム)を実行します。
Done.
- が実行中断MSGを表示します(はCtrl + C要求が実行されている間):ブラウザのエラーホストに到達できません。
これまでのすべてg期待どおりに。 、KeyboardInterrupt
別名とすぐ + CがヒットするCtrlキーとして:PythonではCtrl +Cが完全に停止ではありませんが、実際にはかなり便利取り扱わので、しかし、私は、少し周りを演奏しました例外は(これに相当)を上昇さ:
raise KeyboardInterrupt()
ので、あなたのコマンドラインベースのプログラムの開発に次を置くことができます。
try:
some_action_that_takes_a_while()
except KeyboardInterrupt:
print('The user stopped the programm.')
新しいビューはそのように見えますジャンゴに移植:
def get (self, request):
import time
slept_for = 0
try:
for i in range(100):
slept_for += 0.1
time.sleep(0.1)
except KeyboardInterrupt:
pass
response = HttpResponse('Slept for: ' + str(slept_for) + 's')
return response
- ノーマル(10Sランタイム)を実行は:MSGを表示
Slept for: 10s
- は要求しながら、(はCtrl + Cを実行中断しました実行中):ブラウザエラー、ホストにアクセスできない
変更なしここでの行動。興味のあるものは1行変更しましたが、結果は変わりませんでした。私は最終的にあなたの質問に答える代わりに
time.sleep(0.1)
の
slept_for = 1000*1000
を使用:Ctrlキー + Cのdevのサーバーはすぐにシャットダウンし、はHTTP-requetsを実行するには、完成しではありません。
デフォルトでは、 'manage.py runserver'はデーモンスレッドを使用して応答を送ります。つまり、メインスレッドが終了するとすぐに完全なプロセスがシャットダウンされ、デーモンスレッドが終了するのを待たないでしょう。 'KeyboardInterrupt'は応答を提供していないメインスレッドで起動されるので、あなたのビューでそれを取得することはできず、すべてのデーモンスレッドを持つプロセスは直ちに終了します。だからこそ、2番目の例ではまだ応答が完了しません。 – knbk
- 1. "$ python manage.py runserver"が機能しません。 「python3 manage.py runserver」のみ
- 2. python2.7 manage.py runserver
- 3. python manage.py runserverセグメンテーションフォールト
- 4. Django manage.py runserver verbosity
- 5. manage.py runserverエラー:[Errno 10013]
- 6. のpython3 manage.pyのrunserver Djangoの
- 7. ジャンゴのsudoのrunserverエラー
- 8. 構文エラージャンゴ(1.10.1)PY -3.5 manage.pyのrunserver
- 9. manage.py:エラー:認識できない引数:のrunserver 8000は、GoogleアナリティクスAPIジャンゴ
- 10. のpython manage.pyのrunserverエラーがdjango.core.exceptions.ImproperlyConfigured:T
- 11. Django manage.py runserver無効な構文
- 12. python manage.py runserverエラー環境変数
- 13. manage.py runserverが動作しませんDjango
- 14. JythonでDjangoでmanage.py runserverを実行する
- 15. manage.py runserverを実行するとPython.exeがクラッシュする
- 16. ジャンゴGeonodeのpython manage.py updatelayersが
- 17. python manage.py runserverの実行中にエラーが発生しました
- 18. ジャンゴ・パイプラインFileNotFoundError私が行うmanage.py collectstatic
- 19. ジャンゴmanage.py syncdbの実行がスーパー
- 20. npmスクリプトをmanage.py runserverで実行できますか?
- 21. Pythonがmanage.py runserver上で動作しなくなる
- 22. Django "./manage.py runserver"コンソールの代わりにファイルにログ
- 23. Djangoのインストールは、manage.py
- 24. はImportError:「のpython manage.pyのrunserver」このエラーaccuresを実行しているとき
- 25. django manage.py runserverが2回目の要求後にハングアップする(間欠的)
- 26. Win32 API - Ctrl + Ctrl C
- 27. Django 1.10.2 manage.py runserverが見つかりませんでした:/"/static/index.css "
- 28. Flask python app.pyは実行されませんがmanage.py runserverは実行します
- 29. UbuntuでUpstartを使用してmanage.py runserverを実行してください。16.04
- 30. Ctrl + C
私は、Ctrl + Cキーでプロセスとメインスレッドに関連するすべてのサブプロセスを終了させると思います。だから彼らは途中で中断されるだろう。 ps -eLf(linux、unix)を使用して、すべてのスレッドを二重確認の手段としてリストすることができます。 – reticentroot