Skip to content

[Django] performance des API : profiling avec Django-Silk et diverses pistes#1902

Draft
celine-m-s wants to merge 1 commit intomainfrom
celinems/django-silk
Draft

[Django] performance des API : profiling avec Django-Silk et diverses pistes#1902
celine-m-s wants to merge 1 commit intomainfrom
celinems/django-silk

Conversation

@celine-m-s
Copy link
Copy Markdown
Collaborator

@celine-m-s celine-m-s commented Mar 2, 2026

Lien vers la documentation de Django Silk

Testé sur l'API Scot avec curl -I localhost:8000/api/scots.

  • 6 requêtes en base de données. Temps de réponse : environ 8 secondes.
  • Temps de réponse total moyen : 18 secondes.
  • Donc temps pour générer le CSV et le reste : 10 secondes.

Idées d'optimisations :

  • Mieux utiliser les queryset pour évaluer en bas niveau ce qui peut l'être. Se passer des len() à remplacer par des count en base. Plus d'autres aspects à creuser.
  • Ne plus utiliser DictWriter mais récupérer uniquement le nécessaire et utiliser .values_list. Faster CSV export from the Django admin. Pour cela, remplacer les prefetch_related qui génèrent des attributs par des annotations. Chaîner les annotations dans la vue pour rendre la requête à l'ORM plus explicite.
  • Utiliser StreamingHttpResponse au lieu de HttpResponse. How to create CSV output (from Django's doc
  • Forcer l'utilisation des only et defer : https://github.com/charettes/django-seal

Mentionné pour la gloire : Django: profile memory usage with Memray from Adam Johnson. Testé mais difficile à utiliser pour profiler des requêtes Django. La DDT intègre bien une section Profiling mais qui ne me permettait pas de descendre au niveau souhaité.

--

Django: profile memory usage with Silky or Memray

Calls to our API endpoints are preventing various models evolutions
because adding fields to them cause the API to responds more slowly.
Try to understand where the problem come from and how to resolve it.

https://bloomberg.github.io/memray/getting_started.html
https://adamj.eu/tech/2026/01/29/django-profile-memray/

@celine-m-s celine-m-s self-assigned this Mar 2, 2026
@sonarqubecloud
Copy link
Copy Markdown

sonarqubecloud bot commented Mar 2, 2026

@celine-m-s celine-m-s linked an issue Apr 3, 2026 that may be closed by this pull request
@celine-m-s celine-m-s changed the title Django : profiling avec Django-Silk et diverses pistes [Django] performance des API : profiling avec Django-Silk et diverses pistes Apr 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Améliorer la performance des API Django

1 participant