#31254: "populate() isn't reentrant" masks underlying error -----------------------------------------+------------------------ Reporter: TK-23 | Owner: nobody Type: Uncategorized | Status: new Component: Core (Other) | Version: 2.2 Severity: Normal | Keywords: Triage Stage: Unreviewed | Has patch: 0 Needs documentation: 0 | Needs tests: 0 Patch needs improvement: 0 | Easy pickings: 0 UI/UX: 0 | -----------------------------------------+------------------------ I'm new to reporting bugs, but have struggled with this one enough that I thought I would formally document an issue we've seen.
In django/django/apps/registry.py (https://github.com/django/django/blob/20ba3ce4ac8e8438070568ffba76f7d8d4986a53/django/apps/registry.py#L83) there is a line of code that can raise an error when running simple commands like {{{python manage.py runserver}}}: {{{ if self.loading: # Prevent reentrant calls to avoid running AppConfig.ready() # methods twice. raise RuntimeError("populate() isn't reentrant") }}} The problem is that this generic error can mask the true reason why django will not start up (I've seen the true reason be something like a problem with a version of a Python package needing to be updated, or an import of a module that does not exist elsewhere in the code). Based on a stackoverflow response (https://stackoverflow.com/questions/27093746 /django-stops-working-with-runtimeerror-populate-isnt-reentrant) I've learned to comment out {{{raise RuntimeError("populate() isn't reentrant")}}} and replace it with {{{self.app_configs={} }}} This way the true error will be exposed when starting up django. I do not know the best way to handle this but before I found this stackoverflow post, we lost a lot of time trying to debug issues. Even knowing this workaround it is a hassle to adjust the django code to see the true error. I can provide a link to our opensource project with a branch set up to replicate the error if that is helpful. -- Ticket URL: <https://code.djangoproject.com/ticket/31254> 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 view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/048.1c30b1cb53e3e95400a3baee9a5714d4%40djangoproject.com.