skip to navigation
skip to content

python-continuum 0.1.1

Consistent hashing for Python

Copyright (c) 2010 by Joachim Bauch,

python-continuum provides a function to do consistent hashing. See wikipedia [1] for more informations about this technique.

First we need the continuum object that serves as storage for server informations and can later be used to resolve keys:

>>> from continuum import Continuum
>>> c = Continuum()

Empty continuums obviously can’t be queried:

>>> c.resolve('my-key1')
Traceback (most recent call last):
IndexError: empty continuum

Add the server objects that are available as backends:

>>> c.add_server('', 8080)
<Server "", capacity=1>
>>> c.add_server('', 8080)
<Server "", capacity=1>

You can also specify different capacities of the server to priorize them (this defaults to 1):

>>> c.add_server('', 8080, 2)
<Server "", capacity=2>

Server objects can also be removed:

>>> server = c.add_server('', 8080)
>>> c.remove_server(server)
>>> len(c)

Please note that a server can only be added once:

>>> c.add_server('', 8080)
Traceback (most recent call last):
TypeError: server already added

After all servers have been added, the continuum can be queried for the server that should be used for a given (string) key:

>>> c.resolve('my-first-key')
<Server "", capacity=1>
>>> c.resolve('my-other-key')
<Server "", capacity=2>
File Type Py Version Uploaded on Size
python-continuum-0.1.1.tar.gz (md5) Source 2010-11-15 17KB
python_continuum-0.1.1-py2.6.egg (md5) Python Egg 2.6 2010-11-15 5KB