diff --git a/django/core/servers/basehttp.py b/django/core/servers/basehttp.py index 8b03e9bb4d..f93b3a3143 100644 --- a/django/core/servers/basehttp.py +++ b/django/core/servers/basehttp.py @@ -115,5 +115,13 @@ def run(addr, port, wsgi_handler, ipv6=False, threading=False): else: httpd_cls = WSGIServer httpd = httpd_cls(server_address, WSGIRequestHandler, ipv6=ipv6) + if threading: + # ThreadingMixIn.daemon_threads indicates how threads will behave on an + # abrupt shutdown; like quitting the server by the user or restarting + # by the auto-reloader. True means the server will not wait for thread + # termination before it quits. This will make auto-reloader faster + # and will prevent the need to kill the server manually if a thread + # isn't terminating correctly. + httpd.daemon_threads = True httpd.set_app(wsgi_handler) httpd.serve_forever() diff --git a/docs/releases/1.8.txt b/docs/releases/1.8.txt index 30a5ab2239..087098b4ba 100644 --- a/docs/releases/1.8.txt +++ b/docs/releases/1.8.txt @@ -165,6 +165,8 @@ Management Commands * The :djadminopt:`--ignorenonexistent` option of the :djadmin:`loaddata` management command now ignores data for models that no longer exist. +* :djadmin:`runserver` now uses daemon threads for faster reloading. + Models ^^^^^^