Opened 10 years ago

Closed 10 years ago

Last modified 10 years ago

#22729 closed Uncategorized (invalid)

Runserver’s autoreload not monitoring views.py & urls.py

Reported by: Guilhem Saurel Owned by: nobody
Component: Uncategorized Version: 1.7-beta-2
Severity: Normal Keywords:
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

Hi,

It seems that a touch on a views.py or an urls.py does not trigger the runserver's autoreload as it does with any other files I tested.

I dig a little to see how this should work, and in utils/autoreload.py there is that function gen_filenames() which looks for sys.modules.values(), so I tried that in a ./manage.py shell:

import sys
list(filter(lambda x: 'home' in x, [filename.__file__ for filename in list(sys.modules.values()) if hasattr(filename, '__file__')]))

which should show the monitored files in my project, and it lists settings.py, models.py, init.py and even some other of my scripts, but no views.py or urls.py.

Any clue ?

Change History (4)

comment:1 by anonymous, 10 years ago

PS: I tried those «touch» with Python 3.4.1 - Django 1.7.0b4 and Python 2.7.6 - Django 1.6.5, with same negative results

comment:2 by Guilhem Saurel, 10 years ago

PPS: oh, ugly filter:

[filename.__file__ for filename in list(sys.modules.values()) if hasattr(filename, '__file__') and 'home' in filename.__file__]

comment:3 by Claude Paroz, 10 years ago

Resolution: invalid
Status: newclosed

The reloading code only monitors imported files (aka sys.modules). When you launch runserver and no requests have been made, urls.py might not have been imported yet, so no need to reload the module after any modification. After each request, the list of monitored files is updated, so if you touch urls.py after a request has been made, you should see the autoreloader in action. I think this is expected behavior.

comment:4 by Guilhem Saurel, 10 years ago

Ok, I got it, thanks !

Note: See TracTickets for help on using tickets.
Back to Top