{{{
$ ./manage.py runserver
Validating models...
Traceback (most recent call last):
File "./manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/home/vella/projetos/chroni9/venv/site-
packages/django/core/management/__init__.py", line 397, in
execute_from_command_line
utility.execute()
File "/home/vella/projetos/chroni9/venv/site-
packages/django/core/management/__init__.py", line 390, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/vella/projetos/chroni9/venv/site-
packages/django/core/management/base.py", line 240, in run_from_argv
self.execute(*args, **options.__dict__)
File "/home/vella/projetos/chroni9/venv/site-
packages/django/core/management/base.py", line 283, in execute
output = self.handle(*args, **options)
File "/home/vella/projetos/chroni9/venv/site-
packages/django/core/management/commands/runserver.py", line 75, in handle
self.run(*args, **options)
File "/home/vella/projetos/chroni9/venv/site-
packages/django/core/management/commands/runserver.py", line 84, in run
autoreload.main(self.inner_run, args, options)
File "/home/vella/projetos/chroni9/venv/site-
packages/django/utils/autoreload.py", line 181, in main
reloader(wrapped_main_func, args, kwargs)
File "/home/vella/projetos/chroni9/venv/site-
packages/django/utils/autoreload.py", line 148, in python_reloader
reloader_thread()
File "/home/vella/projetos/chroni9/venv/site-
packages/django/utils/autoreload.py", line 129, in reloader_thread
if code_changed():
File "/home/vella/projetos/chroni9/venv/site-
packages/django/utils/autoreload.py", line 60, in code_changed
for m in sys.modules.values():
RuntimeError: dictionary changed size during iteration
}}}
I am using Django 1.6b2, with the totally experimental Python 3
implementation from PyPy 2.1, so I can not be sure if this really is a
Django Python 3 issue, just PyPy issue, or PyPy Python 3 issue.
It happened only once, just now, and I was unable to reproduce. I am using
SQLite, if that matters...
--
Ticket URL: <https://code.djangoproject.com/ticket/21049>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
* needs_better_patch: => 0
* needs_docs: => 0
* needs_tests: => 0
* easy: 0 => 1
* stage: Unreviewed => Accepted
Comment:
Right, in Python 3 `values()` returns a dictionary view
(http://docs.python.org/3/library/stdtypes.html#dictionary-view-objects),
not a copy of the values as in Python 2. Probably wrapping
`sys.modules.values()` inside `list()` would be sufficient to ensure
thread-safety.
--
Ticket URL: <https://code.djangoproject.com/ticket/21049#comment:1>
* owner: nobody => mburst
* status: new => assigned
--
Ticket URL: <https://code.djangoproject.com/ticket/21049#comment:2>
Comment (by mburst):
The pull request for this ticket is here
https://github.com/django/django/pull/1575
--
Ticket URL: <https://code.djangoproject.com/ticket/21049#comment:3>
* has_patch: 0 => 1
--
Ticket URL: <https://code.djangoproject.com/ticket/21049#comment:4>
Comment (by Andrew Godwin <andrew@…>):
In [changeset:"ce5e09353d4ac3bda10f95e1cc8e609b0b397fdc"]:
{{{
#!CommitTicketReference repository=""
revision="ce5e09353d4ac3bda10f95e1cc8e609b0b397fdc"
Merge pull request #1575 from mburst/ticket_21049
Fixed #21049 -- Fixed autoreload for Python 3
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/21049#comment:6>
* status: assigned => closed
* resolution: => fixed
Comment:
In [changeset:"559cb826b850faeb7ad198a3a78a38f07dcf3b42"]:
{{{
#!CommitTicketReference repository=""
revision="559cb826b850faeb7ad198a3a78a38f07dcf3b42"
Fixed #21049 -- Fixed autoreload for Python 3
Changed th system module values check to return a list.
In Python 3 it returns a dict_view which could occassionally produce
a runtime error of "dictionary changed size during iteration".
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/21049#comment:5>
Comment (by Tim Graham <timograham@…>):
In [changeset:"92e89452f1aa3987cb70648e69718c6adea4b079"]:
{{{
#!CommitTicketReference repository=""
revision="92e89452f1aa3987cb70648e69718c6adea4b079"
[1.6.x] Fixed #21049 -- Fixed autoreload for Python 3
Changed th system module values check to return a list.
In Python 3 it returns a dict_view which could occassionally produce
a runtime error of "dictionary changed size during iteration".
Backport of 559cb826b8 from master
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/21049#comment:7>
Comment (by Claude Paroz <claude@…>):
In [changeset:"e0381cdf2e7f677c5b29f2e3351993e92915569a"]:
{{{
#!CommitTicketReference repository=""
revision="e0381cdf2e7f677c5b29f2e3351993e92915569a"
Fixed #22017 -- Prevented RuntimeError on Python 3
Refs #21049. Thanks quinox for the report.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/21049#comment:8>