Skip to main content

Django Nginx Memcached integration.

Project description

Djanginxed

Django Nginx Memcached integration.

Provides a view decorator caching content in Memcached for easy retrieval via Nginx. The cache is keyed by md5 of full request path (which includes GET parameters).

Installation

  1. Install or add djanginxed to your Python path.

  2. Setup Memcached appropriately as described in Django’s cache framewrok docs.

  3. Optionally, set the CACHE_MIDDLEWARE_KEY_PREFIX setting in your Django’s settings file – If the cache is shared across multiple sites using the same Django installation, set this to the name of the site, or some other string that is unique to the Django instance, to prevent key collisions:

    CACHE_MIDDLEWARE_KEY_PREFIX = "site1"
  4. Install Nginx with the set_hash module. This module is required to compute md5 cache keys from within Nginx, i.e.:

    set_md5 $memcached_key $request_uri;
  5. Configure Nginx for direct Memcached page retrieval, i.e:

    location / {
        default_type       text/html;
        set_md5 $memcached_key $request_uri;
        memcached_pass     127.0.0.1:11211;
        error_page         404 405 500 @django;
    }
    
    location @django {
        fastcgi_pass    127.0.0.1:7000;
        fastcgi_param   GATEWAY_INTERFACE   CGI/1.1;
        fastcgi_param   DOCUMENT_URI        $document_uri;
        fastcgi_param   DOCUMENT_ROOT       $document_root;
        fastcgi_param   REQUEST_METHOD      $request_method;
        fastcgi_param   REQUEST_URI         $request_uri;
        fastcgi_param   REMOTE_ADDR         $remote_addr;
        fastcgi_param   REMOTE_PORT         $remote_port;
        fastcgi_param   QUERY_STRING        $query_string;
        fastcgi_param   CONTENT_TYPE        $content_type;
        fastcgi_param   CONTENT_LENGTH      $content_length;
        fastcgi_param   SERVER_ADDR         $server_addr;
        fastcgi_param   SERVER_PROTOCOL     $server_protocol;
        fastcgi_param   SERVER_PORT         $server_port;
        fastcgi_param   SERVER_NAME         $server_name;
        fastcgi_param   SERVER_SOFTWARE     nginx/$nginx_version;
        fastcgi_param   PATH_INFO           $fastcgi_script_name;
    }
  6. Optionally, when using a cache key prefix, include it during Nginx $memcached_key generation:

    set_md5 $memcached_key site1$request_uri;

Usage

Decorators

djanginxed.decorators.cache.cache_page

The cache_page decorator caches view response content in Memcached suitable for lookup by Nginx. cache_page takes a single argument: the cache timeout, in seconds.

Example:

from djanginxed.decorators.cache import cache_page

@cache_page(60 * 15)
def my_view(request):
    ...

This will cache the view’s response string in Memcached for 15 minutes (60 * 15), with the cache key generated from the full request path.

NOTE: The resulting HttpResponse object’s content value is stored in Memcached and not the actual HttpResponse object.

cache_page can also take an optional keyword argument, key_prefix, which works in the same way as the CACHE_MIDDLEWARE_KEY_PREFIX setting for the middleware. It can be used like this:

@cache_page(60 * 15, key_prefix="site1")
def my_view(request):
    ...

Authors

  • Shaun Sephton

Changelog

0.0.4

  1. Tests and polish.

0.0.1

  1. Initial release.

Project details


Download files

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

Source Distribution

djanginxed-0.0.4.tar.gz (4.9 kB view details)

Uploaded Source

Built Distribution

djanginxed-0.0.4-py2.6.egg (7.3 kB view details)

Uploaded Egg

File details

Details for the file djanginxed-0.0.4.tar.gz.

File metadata

  • Download URL: djanginxed-0.0.4.tar.gz
  • Upload date:
  • Size: 4.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for djanginxed-0.0.4.tar.gz
Algorithm Hash digest
SHA256 fc65f09c8ed5d7be1dd676789bf326eb3db01a9c042c792e70a983eefc418f92
MD5 14e067abeadce64ab3274deec00a9e38
BLAKE2b-256 bc84c6e32f84ee1cb838c4264f340643ee0196ff8b2161a56024169a36945553

See more details on using hashes here.

File details

Details for the file djanginxed-0.0.4-py2.6.egg.

File metadata

File hashes

Hashes for djanginxed-0.0.4-py2.6.egg
Algorithm Hash digest
SHA256 2723a032a32c1fcea6b3f884259f45cfa27205c3f243bd29539565a4b4225f42
MD5 11dbee54726d2b2890cf1f0e9577f9e6
BLAKE2b-256 f929c48b40895afdce1bafbffd0ff99602fb6678d47430d5da8c6a33d8ebf943

See more details on using hashes here.

Supported by

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