Skip to main content

Degrade gracefully by automatically replacing heavy pages with static pages while a server is taking strain.

Project description

Django Scaler

Degrade gracefully by automatically replacing heavy pages with static pages while a server is taking strain.

Installation

  1. Install or add django-scaler to your Python path.

  2. Add scaler to your INSTALLED_APPS setting.

  3. Add scaler.middleware.ScalerMiddleware to the top of your MIDDLEWARE_CLASSES setting.

  4. Add (r’^scaler/’, include(‘scaler.urls’)) to urlpatterns.

Overview

Servers may at times get overloaded due to a variety of reasons. When that happens you don’t want expensive requests to bring down your entire site. The site must redirect expensive requests to a “server busy” page while the server is under load, and then automatically remove the redirects once the load has dropped enough.

django-scaler addresses this situation in two ways. Firstly, it knows which requests to redirect by itself. Secondly, it can be instructed to redirect the N most expensive requests. It stores response time data in in-memory caches enabling it to make these decisions.

Usage

Pasted from test_settings.py:

DJANGO_SCALER = {
    'server_busy_url_name': 'server-busy',

    # How many response times to consider for an URL. A small value means slow
    # response times are quickly acted upon, but it may be overly aggressive.
    # A large value means an URL must be slow for a number of requests before
    # it is acted upon. The default is 100.
    'trend_size': 10,

    # How much slower than average the trend must be before redirection kicks
    # in. The default is 4.0.
    'slow_threshold': 2.0,

    # How many seconds to keep redirecting an URL before serving normally. The
    # default is 60.
    'redirect_for': 10,

    # A function that returns how many of the slowest URLs must be redirected.
    # Depending on the site, data and load on the server this may be a large
    # number. This allows external processes to instruct the middleware to
    # redirect. The default is 0.
    'redirect_n_slowest_function': lambda: 0,

    # A function that returns what percentage of the slowest URLs must be
    # redirected. Depending on the site, data and load on the server this may
    # approach 100. The default is 0.
    'redirect_percentage_slowest_function': lambda: 0,

    # A function that returns a list of regexes. URLs matching the regexes are
    # redirected. Each regex is a simple string. Do not prefix with r''. The
    # default is an empty list.
    'redirect_regexes_function': lambda: [],
}

Authors

Praekelt Foundation

  • Hedley Roos

Changelog

0.2

  1. Regex URL matching for explicit redirection.

  2. Percentage slowest explicit redirection.

0.1

  1. First release.

Project details


Release history Release notifications | RSS feed

This version

0.2

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-scaler-0.2.tar.gz (8.7 kB view details)

Uploaded Source

Built Distributions

django_scaler-0.2-py2.7.egg (13.5 kB view details)

Uploaded Source

django_scaler-0.2-py2.6.egg (13.6 kB view details)

Uploaded Source

File details

Details for the file django-scaler-0.2.tar.gz.

File metadata

  • Download URL: django-scaler-0.2.tar.gz
  • Upload date:
  • Size: 8.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for django-scaler-0.2.tar.gz
Algorithm Hash digest
SHA256 d4069d04176e948ffcf81267e061f2927d51dd5a0505d2e02d10b614531816d0
MD5 4b68724531100a71f59d5b2b6c964eb6
BLAKE2b-256 c1760a1b2841ac5f5e7a252d93dca761e21c54199e5b84c27547cd54d93e3830

See more details on using hashes here.

File details

Details for the file django_scaler-0.2-py2.7.egg.

File metadata

File hashes

Hashes for django_scaler-0.2-py2.7.egg
Algorithm Hash digest
SHA256 ad7c527d5d7ba33f0256a657127b1933844ebcca90508cd08ddbf97c87cd0359
MD5 0f75aa3106c38d115c080e1046671988
BLAKE2b-256 4692fae243968074c928465ea7fe72d7eecedcc19421014badfc784deb0bcd60

See more details on using hashes here.

File details

Details for the file django_scaler-0.2-py2.6.egg.

File metadata

File hashes

Hashes for django_scaler-0.2-py2.6.egg
Algorithm Hash digest
SHA256 fcd8f934ebf88b00385fb00d4c19721e06a6acf7ab00f1601625f3e6484ee1c9
MD5 8e06b5679d454dd8998284d2628af63c
BLAKE2b-256 0839a902c7cb23603aba1460ab26ed02490a906b7b5d7659c6aa0aa0e8e85db9

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page