#36137: Simple performance test using timeit and django.test.Client leads to 
using
all available memory
-----------------------------+---------------------------------------------
     Reporter:  Vinay Sajip  |                     Type:  Bug
       Status:  new          |                Component:  Testing framework
      Version:  5.1          |                 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
-----------------------------+---------------------------------------------
 Running this script:

 {{{
 #!/usr/bin/env bash
 rm -rf minimal env
 python3 -m venv env
 env/bin/pip install django
 env/bin/django-admin startproject minimal
 cd minimal
 ../env/bin/python manage.py startapp basic
 cat << EOF > basic/tests.py
 import timeit

 from django.test import TestCase, Client

 class MinimalTestCase(TestCase):
     def test_render_performance(self):
         n = 2000000
         t = timeit.timeit(setup="from django.test import Client; c =
 Client(headers={'user-agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:134.0)
 Gecko/20100101 Firefox/134.0'})",
                           stmt="c.get('/admin/')", number=n)
         print(f'{int(t * 1000/n)} msecs')
 EOF
 ../env/bin/python manage.py test

 }}}

 causes all of the memory in the machine to be used up. This is unexpected,
 as the response returned from the `c.get('/admin/')` call isn't stored
 anywhere and should be garbage collected, and it's not clear where the
 memory leak is. Once the memory usage goes to near 100%, the swap starts
 going up and the test grinds to a crawl.

 Tested with Django 5.1.5, Python 3.10.12 on a Linux Mint system with 4GB
 of memory.
-- 
Ticket URL: <https://code.djangoproject.com/ticket/36137>
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 visit 
https://groups.google.com/d/msgid/django-updates/010701949ed5e63a-b98413e9-b0c5-4d11-b3ab-62ef43fde3cc-000000%40eu-central-1.amazonses.com.

Reply via email to