Releases: django-hurricane/django-hurricane
1.5.0
Summary
Django-Hurricane 1.5.0 now includes a Prometheus instrumentation and can control memory allocations! 🎉
There are a couple of new options for the python manage.py serve
command:
--no-metrics
to disable the metrics endpoint which serves on /metrics
(on the internal port) by default
--max-memory
to limit the maximum memory allocation and restart if exceeded
--workers
set the amount of threads for the ThreadPoolExecutor
In addition, there is now a proper structlog
integration as soon as you install structlog to your project.
Hint: If you run Hurricane workloads on GKE, please install https://github.com/multani/structlog-gcp, too, to perfectly process your logs to Google's log format.
What's Changed
- feat: add prometheus instrumentation by @Schille in #120
- fix: package name is django-hurricane by @hng in #123
- feat: structlog integration by @Schille in #122
- feat: add max memory observer, make worker threads adjustable by @Schille in #125
New Contributors
Full Changelog: 1.4.0...1.5.0
1.4.0
Summary
Django-Hurricane 1.4.0 now supports Django 4.2! 🎉
In addition, we added a new command option python manage.py serve --check-migrations-apply
that applies missing migrations on startup.
The performance for concurrent requests was considerably improved by using the ThreadPoolExecutor
for WSGI requests to Django.
The load testing results from Hurricane version 1.3.4 are the following:
Type Name # reqs # fails | Avg Min Max Med | req/s failures/s
--------|----------------------------------------------------------------------------|-------|-------------|-------|-------|-------|-------|--------|-----------
GET / 61 0(0.00%) | 141 1 806 2 | 0.51 0.00
GET /heavy 57 0(0.00%) | 562 502 1022 502 | 0.48 0.00
GET /medium 183 0(0.00%) | 211 102 881 102 | 1.54 0.00
--------|----------------------------------------------------------------------------|-------|-------------|-------|-------|-------|-------|--------|-----------
Aggregated 301 0(0.00%) | 263 1 1022 100 | 2.53 0.00
Response time percentiles (approximated)
Type Name 50% 66% 75% 80% 90% 95% 98% 99% 99.9% 99.99% 100% # reqs
--------|--------------------------------------------------------------------------------|--------|------|------|------|------|------|------|------|------|------|------|------
GET / 2 95 280 350 490 550 670 810 810 810 810 61
GET /heavy 500 500 510 590 810 850 860 1000 1000 1000 1000 57
GET /medium 100 170 270 310 510 600 810 810 880 880 880 183
--------|--------------------------------------------------------------------------------|--------|------|------|------|------|------|------|------|------|------|------|------
Aggregated 100 370 500 500 550 710 810 850 1000 1000 1000 301
The load testing with Hurricane version 1.4.0 from this release in comparison:
Type Name # reqs # fails | Avg Min Max Med | req/s failures/s
--------|----------------------------------------------------------------------------|-------|-------------|-------|-------|-------|-------|--------|-----------
GET / 61 0(0.00%) | 2 1 10 2 | 0.51 0.00
GET /heavy 62 0(0.00%) | 503 502 523 502 | 0.52 0.00
GET /medium 179 0(0.00%) | 103 101 110 101 | 1.50 0.00
--------|----------------------------------------------------------------------------|-------|-------------|-------|-------|-------|-------|--------|-----------
Aggregated 302 0(0.00%) | 165 1 523 100 | 2.53 0.00
Response time percentiles (approximated)
Type Name 50% 66% 75% 80% 90% 95% 98% 99% 99.9% 99.99% 100% # reqs
--------|--------------------------------------------------------------------------------|--------|------|------|------|------|------|------|------|------|------|------|------
GET / 2 2 2 2 2 7 10 10 10 10 10 61
GET /heavy 500 500 500 500 500 510 510 520 520 520 520 62
GET /medium 100 100 100 100 100 110 110 110 110 110 110 179
--------|--------------------------------------------------------------------------------|--------|------|------|------|------|------|------|------|------|------|------|------
Aggregated 100 100 110 500 500 500 500 510 520 520 520 302
In general, concurrent requests do not stack up anymore, instead, they are executed concurrently. As one can see, the /heavy
view blocks for ~500ms (time.sleep(0.5)
), the /medium
view respectively 100ms (time.sleep(0.1)
). In the upper table, the response times get longer over time. The response times are now true to the actual view duration because the requests are executed in parallel.
What's Changed
- Added --check-migrations-apply command by @AbelHristodor in #107
- Django 4.2 support (no asgi) by @Schille in #116
- chore(deps): bump pygments from 2.7.4 to 2.15.0 in /docs by @dependabot in #114
- chore: switch to poetry by @Schille in #117
- feat: merge load test as part of CI by @Schille in #118
- feat/improve-perf by @Schille in #119
New Contributors
- @AbelHristodor made their first contribution in #107
Full Changelog: 1.3.4...1.4.0
1.3.4
What's Changed
- 80 hide probe in logs by @georgkrause in #104
New Contributors
- @georgkrause made their first contribution in #104
Full Changelog: 1.3.3...1.3.4
1.3.3
What's Changed
- fix: inheritance for static file handler by @SteinRobert in #103
Full Changelog: 1.3.2...1.3.3
1.3.2
What's Changed
- chore: add static file handler for Django in DEBUG mode by @SteinRobert in #101
Full Changelog: 1.3.1...1.3.2
1.3.1
What's Changed
- chore: add path options for static watch by @SteinRobert in #98
Full Changelog: 1.3.0...1.3.1
1.3.0
What's Changed
- Check for static files and recollect if changed by @vvvityaaa in #95
Full Changelog: 1.2.0...1.3.0
1.2.0
What's Changed
- Incompatibility logic for autoreload and debug by @vvvityaaa in #93
- Adding custom checks to readiness probe by @vvvityaaa in #91
- Readme improvements by @vvvityaaa in #89
Full Changelog: 1.1.0...1.2.0
1.1.0
What's Changed
- WIP: Code smells and hot spots by @vvvityaaa in #84
- Flags in documentation not correct for copying by @vvvityaaa in #86
- Max pod lifetime by @vvvityaaa in #88
Full Changelog: 1.0.0...1.1.0
1.0.0
What's Changed
- Update index.md by @marty-2015 in #54
- Add guide for basic django hurricane app by @vvvityaaa in #56
- Fix check execution by @tschale in #63
- Update usage guide with toc and remove from readme by @vvvityaaa in #62
- Fix tests by @vvvityaaa in #66
- Better code test coverage by @vvvityaaa in #72
- Exit on command or check migrations with error by @vvvityaaa in #67
- Improved header section of README by @vvvityaaa in #81
- chore(deps): bump jinja2 from 2.11.2 to 2.11.3 in /docs by @dependabot in #77
- chore: make doc of serve command more concise by @tschale in #76
- Docs for django custom checks by @vvvityaaa in #70
Full Changelog: 0.9.2...1.0.0