Skip to content

Releases: django-hurricane/django-hurricane

1.5.0

15 Feb 18:21
102f4ca
Compare
Choose a tag to compare

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

  • @hng made their first contribution in #123

Full Changelog: 1.4.0...1.5.0

1.4.0

09 Oct 15:16
c744dd5
Compare
Choose a tag to compare

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

New Contributors

Full Changelog: 1.3.4...1.4.0

1.3.4

05 Oct 16:17
f878cd1
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: 1.3.3...1.3.4

1.3.3

15 Sep 16:35
7d123a1
Compare
Choose a tag to compare

What's Changed

Full Changelog: 1.3.2...1.3.3

1.3.2

14 Sep 16:13
f825211
Compare
Choose a tag to compare

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

31 Aug 14:19
a490f85
Compare
Choose a tag to compare

What's Changed

Full Changelog: 1.3.0...1.3.1

1.3.0

22 Jul 12:00
7f21e0e
Compare
Choose a tag to compare

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

08 Jun 14:26
13d8889
Compare
Choose a tag to compare

What's Changed

Full Changelog: 1.1.0...1.2.0

1.1.0

18 May 16:31
e9054d3
Compare
Choose a tag to compare

What's Changed

Full Changelog: 1.0.0...1.1.0

1.0.0

25 Apr 12:12
69518c2
Compare
Choose a tag to compare

What's Changed

Full Changelog: 0.9.2...1.0.0