Skip to main content

proxenos: A rendezvous hashing and service routing toolkit.

Project description

https://img.shields.io/pypi/v/proxenos.svg https://img.shields.io/pypi/pyversions/proxenos.svg https://travis-ci.org/darvid/proxenos.svg?branch=master https://img.shields.io/coveralls/darvid/proxenos.svg Join the chat at https://gitter.im/python-proxenos/Lobby

A Python toolkit for Rendezvous/Highest Random Weight (HRW) hash based routing.

>>> import proxenos.mappers.consul
>>> import proxenos.rendezvous
>>> mapper = proxenos.mappers.consul.ConsulClusterMapper(
...     host='localhost', port=8500)
>>> mapper.update()
>>> mapper.cluster
{SocketAddress(host=IPAddress('::'), port=8000),
 SocketAddress(host=IPAddress('::'), port=8001),
 SocketAddress(host=IPAddress('::'), port=8300),
 SocketAddress(host=IPAddress('::'), port=8500)}
>>> mapper.select('github.com', proxenos.rendezvous.HashMethod.SIPHASH)
SocketAddress(host=IPAddress('::'), port=8001)
$ proxenos select -b consul -h localhost -p 8500 github.com
0.0.0.0:8300

Features

  • Support for multiple service discovery backends possible. Currently only support for Consul is implemented, but other backends coming eventually.
  • Supports many different hash functions and PRFs. The default hashing method is the SipHash PRF.
  • Provides a command-line interface for quickly testing/debugging node selection.

Installation

$ pip install proxenos
$ # If you'd like Murmur3 support, use:
$ pip install proxenos[murmur]

Notes

proxenos uses Python’s PRNG for calculating the weight of nodes in a cluster, rather than using a linear congruential generator (LCG) as described in the original paper on Rendezvous hashing. Seeded weights generated are limited to sys.maxsize, which means the resulting weights will differ depending on the platform architecture.

Download files

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

Files for proxenos, version 0.0.3
Filename, size File type Python version Upload date Hashes
Filename, size proxenos-0.0.3-py2.py3-none-any.whl (33.4 kB) File type Wheel Python version py2.py3 Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page