#31599: Improve the performance of the autoreloader by ignoring third party
packages
------------------------------------------------+------------------------
               Reporter:  Tom Forbes            |          Owner:  nobody
                   Type:  Cleanup/optimization  |         Status:  new
              Component:  Utilities             |        Version:  master
               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                     |
------------------------------------------------+------------------------
 In https://github.com/django/django/pull/12750 and
 https://code.djangoproject.com/ticket/30372 we stopped watching the
 translation files that Django ships, to improve the performance of the
 autoreloader.

 I believe we can go a step further and stop monitoring all third-party
 packages for changes by using the sysconfig module:
 https://docs.python.org/3/library/sysconfig.html. With this we can get a
 list of different Python system directories, for example:

 {{{
         data = "/Users/tom/PycharmProjects/github/orf/django/venv"
         include =
 
"/usr/local/Cellar/python/3.7.7/Frameworks/Python.framework/Versions/3.7/include/python3.7m"
         platinclude =
 
"/usr/local/Cellar/python/3.7.7/Frameworks/Python.framework/Versions/3.7/include/python3.7m"
         platlib =
 "/Users/tom/PycharmProjects/github/orf/django/venv/lib/python3.7/site-
 packages"
         platstdlib =
 "/Users/tom/PycharmProjects/github/orf/django/venv/lib/python3.7"
         purelib =
 "/Users/tom/PycharmProjects/github/orf/django/venv/lib/python3.7/site-
 packages"
         scripts = "/Users/tom/PycharmProjects/github/orf/django/venv/bin"
         stdlib =
 
"/usr/local/Cellar/python/3.7.7/Frameworks/Python.framework/Versions/3.7/lib/python3.7"
 }}}

 We could simply not watch any path under the `purelib` directory to start.
 This would exclude a huge number of files from being watched - Django
 alone has 824 individual files that would be excluded, and it's safe to
 assume that a large project with many third party dependencies would have
 several thousand.

 This would be a breaking change - personally I sometimes find myself
 navigating into third party code and making small changes while debugging,
 and I'm sure others do this from time to time. However I don't think it's
 a common occurance for most developers and I'm not sure everyone paying a
 cost is worth the benefit to a small number of people.

-- 
Ticket URL: <https://code.djangoproject.com/ticket/31599>
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/046.8548a142cd495d11a6332a172401e048%40djangoproject.com.

Reply via email to