• Stars
    star
    100
  • Rank 340,703 (Top 7 %)
  • Language
    Python
  • License
    The Unlicense
  • Created over 12 years ago
  • Updated about 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Automatic Django memcached configuration on Heroku.

django-heroku-memcacheify

Automatic Django memcached configuration on Heroku.

Deploying memcached is easy

Install

To install django-heroku-memcacheify, simply run pip install django-heroku-memcacheify and you'll get the latest version installed automatically.

NOTE: If you'd like to install this locally, you'll need to have the libmemcached-dev libraries installed for this to compile properly. On Debian and Ubuntu you can install this by running sudo aptitude -y install libmemcached-dev. If you're using a Mac, you can use homebrew and run brew install libmemcached.

Usage

Modify your Django settings.py file, and set:

from memcacheify import memcacheify

CACHES = memcacheify()

Next, ensure pylibmc is present in your requirements.txt file (or one included from it), so the Heroku Python buildpack will detect the necessary C dependencies and 'bootstrap' your application.

Assuming you have a memcache server available to your application on Heroku, it will instantly be available. If you have no memcache addon provisioned for your app, memcacheify will default to using local memory caching as a backup :)

Heroku Setup

Now that you've got Django configured to use memcache, all you need to do is install one memcache addons that Heroku provides!

I personally recommend MemCachier -- they're stable, cheap, great!

Let's say I want to install the memcachier addon, I could simply run:

$ heroku addons:add memcachier:25
$ heroku config
...
MEMCACHIER_SERVERS    => memcachier1.example.net
MEMCACHIER_USERNAME   => bobslob
MEMCACHIER_PASSWORD   => l0nGr4ndoMstr1Ngo5strang3CHaR4cteRS
...

The example above will provision a free 25m memcache server for your application. Assuming everything worked, heroku config's output should show that you now have 3 new environment variables set.

Local Development

If you have a memcached server locally for development that doesn't support authentication, you can still use memcache by setting an environment variable MEMCACHEIFY_USE_LOCAL=True.

This will set the default cache to django_pylibmc.memcached.PyLibMCCache

If there are no environment variables for memcache or memcacheify, the default cache will be local memory django.core.cache.backends.locmem.LocMemCache.

Testing Your Cache

If you don't trust me, and want to make sure your caching is working as expected, you may do the following:

$ heroku run python manage.py shell
Running python manage.py shell attached to terminal... up, run.1
Python 2.7.2 (default, Oct 31 2011, 16:22:04)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from django.core.cache import cache
>>> cache.set('memcache', 'ify!')
True
>>> cache.get('memcache')
'ify!'
>>>

Assuming everything is working, you should be able to set and retrieve cache keys.

References

If you're confused, you should probably read:

Tests

Build Status

Want to run the tests? No problem:

$ git clone git://github.com/rdegges/django-heroku-memcacheify.git
$ cd django-heroku-memcacheify
$ python setup.py develop
...
$ pip install -r requirements.txt  # Install test dependencies.
$ flake8
$ nosetests
.............
----------------------------------------------------------------------
Ran 13 tests in 0.166s

OK

Changelog

v1.0.1: 10-10-2021

- Fixing PyPI description

v1.0.0: 01-04-2016

- Update django-pylibmc dependency to >=0.6.1.
- Officially support Python 3.5.
- Stop testing on Python 2.6.

v0.8: 11-12-2014

- Adding support for memcachedcloud!

v0.7: 9-22-2014

- Upgrading dependencies (again)!

v0.6: 9-20-2014

- Upgrading dependencies.

v0.5: 12-31-2013

- Making the timeout option configurable.
- Removing Python 2.5 support.
- Adding an option to use memcached locally without SASL.
- Updating the README, explaining how to use memcached locally.

v0.4: 12-5-2012

- Update which allows memcachier users to support multiple servers >:)
  Thanks @alexlod!

v0.3: 6-27-2012

- Fixing broken memcachier support.

v0.2: 5-22-2012

- Adding support for memcachier Heroku addon.
- Updating documentation.
- Refactoring implementation for clarity.
- Adding better tests.

v0.1: 5-2-2012

- Initial release!

More Repositories

1

ipify-api

A public IP API service.
Go
1,737
star
2

django-skel

A modern Django (1.5) project skeleton.
Python
518
star
3

django-sslify

Force SSL on your Django site.
Python
336
star
4

django-twilio

A simple library for building twilio-powered Django webapps.
Python
327
star
5

skele-cli

A skeleton command line program in Python.
Python
293
star
6

simpleq

A simple, infinitely scalable, SQS based queue.
Python
165
star
7

flask-dynamo

DynamoDB integration for Flask.
Python
141
star
8

python-ipify

The official client library for ipify: A Simple IP Address API.
Python
138
star
9

cryptocompare

A static website that compares cryptocurrency prices for popular currencies.
HTML
123
star
10

chatapp

A simple WebRTC and Okta front-end app.
JavaScript
122
star
11

go-ipify

The official client library for ipify: A Simple IP Address API.
Go
119
star
12

ss-auth

Stupid Simple Authentication
JavaScript
110
star
13

python-amazonify

The simplest way to build Amazon Affiliate links, in Python.
Python
104
star
14

brute

Simple brute forcing in Python.
Python
101
star
15

svcc-auth

Demo code for my Silicon Valley Code Camp talk about authentication in Node.js!
JavaScript
97
star
16

pycall

A flexible python library for creating and using Asterisk call files.
Python
92
star
17

django-clear-cache

A simple Django management command which clears your cache.
Python
88
star
18

django-ganalytics

Simple Google Analytics integration for Django.
Python
48
star
19

pelican-minify

An HTML minification plugin for Pelican, the static site generator.
Python
47
star
20

django-heroku-postgresify

Automatic Django database configuration on Heroku.
Python
46
star
21

btc

Buy, sell, and transfer bitcoin instantly in your terminal!
Python
45
star
22

flask-heroku-cacheify

Automatic Flask cache configuration on Heroku.
Python
41
star
23

python-basicauth

An incredibly simple HTTP basic auth implementation.
Python
36
star
24

useragent-api

A random user agent API service.
Python
34
star
25

energy-tracker

A simple script (meant to be run via cron) that tracks your Mac laptop's energy usage in watt hours.
Shell
33
star
26

dot-tmux

My tmux dotfiles.
21
star
27

dot-vim

My vim dotfiles.
Vim Script
16
star
28

rdegges-www

My personal website and blog.
SCSS
10
star
29

flask-simple

SimpleDB integration for Flask.
Python
10
star
30

flask-heroku-rqify

Automatic RQ configuration for your Heroku Flask applications.
Python
10
star
31

dot-git

My git dotfiles.
8
star
32

dot-zsh

My ZSH dotfiles.
Shell
6
star
33

rdegges-blog

My personal writings.
6
star
34

cagi

An Asterisk 1.6+ compatible AGI library in C.
C
5
star
35

dog-name-picker

A Python script I used to pick my dog's name.
Python
4
star
36

node-camels

Easily convert to and from camelCase and under_score notation.
JavaScript
3
star
37

skele

A simple, modern, Express 4.x skeleton.
JavaScript
2
star
38

django-coverage

Fork of the popular django-coverage package.
2
star
39

dot-pip

My pip dotfiles.
2
star
40

bitrich-www

HTML
2
star
41

ice-breaker

A simple cross-platform CLI tool that destroys Amazon Glacier vaults.
Go
1
star
42

iterate-banner

Code I used to generate a cool opening video at the Iterate conference in 2018.
Python
1
star
43

dsobook.club

Source code for the DevSecOps Book Club website.
HTML
1
star
44

rondegges-www

My dad's website.
CSS
1
star
45

postgression-www

The public facing website for postgression.com.
1
star
46

dot-python

Dotfiles for managing Python.
Shell
1
star
47

codehappy-www

The public facing Code Happy website.
Pug
1
star
48

sofind

A simple CLI tool to find good StackOverflow users.
JavaScript
1
star
49

actiontest

testing...
1
star
50

generator-momma

yeoman generator for yo momma
JavaScript
1
star
51

python-data247

An API client for Data 24-7.
Python
1
star