#25634: runserver reloader masks exceptions
-------------------------------------+-------------------------------------
     Reporter:  wide-awake           |                    Owner:  nobody
         Type:  Bug                  |                   Status:  new
    Component:  Core (Management     |                  Version:  1.8
  commands)                          |
     Severity:  Normal               |               Resolution:
     Keywords:                       |             Triage Stage:  Accepted
    Has patch:  0                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------

Comment (by unklphil):

 This is a real problem, as it seems to label other exceptions as
 `django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.`

 I had a working Django 1.9rc2 application yesterday, but this morning when
 I tried to run `runserver`, I got:

 {{{
 Traceback (most recent call last):
   File "./manage.py", line 9, in <module>
     execute_from_command_line(sys.argv)
   File "/Users/phil/env/lib/python2.7/site-
 packages/django/core/management/__init__.py", line 350, in
 execute_from_command_line
     utility.execute()
   File "/Users/phil/env/lib/python2.7/site-
 packages/django/core/management/__init__.py", line 342, in execute
     self.fetch_command(subcommand).run_from_argv(self.argv)
   File "/Users/phil/env/lib/python2.7/site-
 packages/django/core/management/__init__.py", line 176, in fetch_command
     commands = get_commands()
   File "/Users/phil/env/lib/python2.7/site-
 packages/django/utils/lru_cache.py", line 100, in wrapper
     result = user_function(*args, **kwds)
   File "/Users/phil/env/lib/python2.7/site-
 packages/django/core/management/__init__.py", line 71, in get_commands
     for app_config in reversed(list(apps.get_app_configs())):
   File "/Users/phil/env/lib/python2.7/site-
 packages/django/apps/registry.py", line 137, in get_app_configs
     self.check_apps_ready()
   File "/Users/phil/env/lib/python2.7/site-
 packages/django/apps/registry.py", line 124, in check_apps_ready
     raise AppRegistryNotReady("Apps aren't loaded yet.")
 django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
 }}}

 This was curious, as I hadn't changed any of the code or packages, so the
 `AppRegistryNotReady` didn't make any sense.

 After a lot of troubleshooting and googling, I found claudep's suggestion
 of using `--noreload` to display the actual error and discovered that the
 error had nothing to do with apps not being ready. The exception it was
 masking was:

 {{{
 Traceback (most recent call last):
   File "./manage.py", line 9, in <module>
     execute_from_command_line(sys.argv)
   File "/Users/phil/env/lib/python2.7/site-
 packages/django/core/management/__init__.py", line 350, in
 execute_from_command_line
     utility.execute()
   File "/Users/phil/env/lib/python2.7/site-
 packages/django/core/management/__init__.py", line 324, in execute
     django.setup()
   File "/Users/phil/env/lib/python2.7/site-packages/django/__init__.py",
 line 17, in setup
     configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
   File "/Users/phil/env/lib/python2.7/site-packages/django/utils/log.py",
 line 71, in configure_logging
     logging_config_func(logging_settings)
   File
 
"/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging/config.py",
 line 794, in dictConfig
     dictConfigClass(config).configure()
   File
 
"/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging/config.py",
 line 576, in configure
     '%r: %s' % (name, e))
 ValueError: Unable to configure handler u'app_log_file': [Errno 2] No such
 file or directory: u'/var/log/myapp/application.log'
 }}}

 Turns out an OS update removed my log directory, and it couldn't create
 the logfiles on startup, but it took me about an hour of troubleshooting
 to find this simple solution just because I was getting the wrong
 exception the whole time.

 IMO this is a major problem, because firstly, the `AppRegistryNotReady`
 traceback is not helpful at all, because it doesn't tell you where the
 problem is, and secondly, it's not even the correct exception.

 Seeing as most Django developers use runserver to develop, I would even
 consider labelling this as a release blocker.

--
Ticket URL: <https://code.djangoproject.com/ticket/25634#comment:12>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To post to this group, send email to django-updates@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/068.dafbbf94d4c2d22c0693582d27edd257%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to