semvec/pypi-packages huggingface dataset:
django-scaler 0.2
Degrade gracefully by automatically replacing heavy pages with static pages while a server is taking strain.
License: BSD

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

.. contents:: Contents
    :depth: 5

Installation
------------

#. Install or add ``django-scaler`` to your Python path.

#. Add ``scaler`` to your ``INSTALLED_APPS`` setting.

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

#. 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
---
#. Regex URL matching for explicit redirection.
#. Percentage slowest explicit redirection.

0.1
---
#. First release.