#30500: Error reporting returns a circular import error on a python formatting error, and does not restart the development server -------------------------------------+------------------------------------- Reporter: Runner15 | Owner: (none) Type: | Status: closed Cleanup/optimization | Component: Error reporting | Version: 2.2 Severity: Normal | Resolution: invalid Keywords: error reporting, | Triage Stage: error, circular import | Unreviewed Has patch: 0 | Needs documentation: 0 Needs tests: 0 | Patch needs improvement: 0 Easy pickings: 0 | UI/UX: 0 -------------------------------------+-------------------------------------
Comment (by Keryn Knight): Actually with a bit of effort, I can still reproduce it under 3.5.7 at least, and I'm suspicious about it being a race condition/timing(/threading?) problem: Given: {{{ import time, os, random >>> while True: ... time.sleep(random.random()) ... os.utime('/path/to/t30500/t30500/views.py') }}} after some arbitrary period of leaving `python -b -B manage.py runserver 0:8080` running, I can get it to do it: {{{ [...] File "/path/to/t30500/t30500/urls2.py", line 1, in <module> from . import views File "/path/to/t30500/t30500/views.py", line 3, in <module> a NameError: name 'a' is not defined /path/to/t30500/t30500/views.py changed, reloading. Watching for file changes with StatReloader Performing system checks... Exception in thread django-main-thread: Traceback (most recent call last): File "/path/to/lib/python3.5/site-packages/django/urls/resolvers.py", line 581, in url_patterns iter(patterns) TypeError: 'module' object is not iterable During handling of the above exception, another exception occurred: [...] File "/path/to/lib/python3.5/site-packages/django/core/checks/urls.py", line 57, in _load_all_namespaces url_patterns = getattr(resolver, 'url_patterns', []) File "/path/to/lib/python3.5/site-packages/django/utils/functional.py", line 80, in __get__ res = instance.__dict__[self.name] = self.func(instance) File "/path/to/lib/python3.5/site-packages/django/urls/resolvers.py", line 588, in url_patterns raise ImproperlyConfigured(msg.format(name=self.urlconf_name)) django.core.exceptions.ImproperlyConfigured: The included URLconf 't30500.urls' does not appear to have any patterns in it. If you see valid patterns in the file then the issue is probably caused by a circular import. }}} If it is some form of timing problem, it could be that it has always existed, but the move to Pathlib has made this specific occurrence more visible because it's slower, and possibly it's visibility changes between python versions (I can't say I've tracked if it's been optimised in 3.6+) for that reason too. I don't know. None of it is particularly clear cut; these kinds of things never are. -- Ticket URL: <https://code.djangoproject.com/ticket/30500#comment:9> 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/066.f40d19468249155bc674dd269d859714%40djangoproject.com. For more options, visit https://groups.google.com/d/optout.