#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.