#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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/048.1c30b1cb53e3e95400a3baee9a5714d4%40djangoproject.com.