Consistent hashing for Python
Project description
Copyright (c) 2010 by Joachim Bauch, mail@joachim-bauch.de http://www.joachim-bauch.de/projects/python-continuum/
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('192.168.0.1', 8080) <Server "192.168.0.1:8080", capacity=1> >>> c.add_server('192.168.0.2', 8080) <Server "192.168.0.2:8080", capacity=1>
You can also specify different capacities of the server to priorize them (this defaults to 1):
>>> c.add_server('192.168.0.3', 8080, 2) <Server "192.168.0.3:8080", capacity=2>
Server objects can also be removed:
>>> server = c.add_server('192.168.0.4', 8080) >>> c.remove_server(server) >>> len(c) 3
Please note that a server can only be added once:
>>> c.add_server('192.168.0.2', 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 "192.168.0.1:8080", capacity=1> >>> c.resolve('my-other-key') <Server "192.168.0.3:8080", capacity=2>
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file python-continuum-0.1.1.tar.gz
.
File metadata
- Download URL: python-continuum-0.1.1.tar.gz
- Upload date:
- Size: 17.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1646eb37fda018609bc982083240cecc0e304c5d01057692e457bff76dca321a |
|
MD5 | 09db7059f5f3f328c22df180e78f0a37 |
|
BLAKE2b-256 | d5c946b2e30e90d795df2892d7ddfd99dfc63f0362f9656db6b8fa52ab65fcfa |
File details
Details for the file python_continuum-0.1.1-py2.6.egg
.
File metadata
- Download URL: python_continuum-0.1.1-py2.6.egg
- Upload date:
- Size: 5.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 75b81a753c2850b924807b2c40257479325f012b4c9ff96b3fdfedd1771dd77e |
|
MD5 | e3ef6a8c6974bb6cd6a78af1d2ad6904 |
|
BLAKE2b-256 | 07250fcaf38f663b93fcaedfd5694453bd2b7a30872dac3a62032ad80ecab668 |