{ "info": { "author": "David Gidwani", "author_email": "david.gidwani@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: MacOS", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX :: Linux", "Operating System :: Unix", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Utilities" ], "description": "========\nproxenos\n========\n\n.. image:: https://img.shields.io/pypi/v/proxenos.svg\n :target: https://pypi.python.org/pypi/proxenos\n\n.. image:: https://img.shields.io/pypi/pyversions/proxenos.svg\n :target: https://pypi.python.org/pypi/proxenos\n\n.. image:: https://travis-ci.org/darvid/proxenos.svg?branch=master\n :target: https://travis-ci.org/darvid/proxenos\n\n.. image:: https://img.shields.io/coveralls/darvid/proxenos.svg\n :target: https://coveralls.io/github/darvid/proxenos\n\n.. image:: https://badges.gitter.im/python-proxenos/Lobby.svg\n :alt: Join the chat at https://gitter.im/python-proxenos/Lobby\n :target: https://gitter.im/python-proxenos/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge\n\nA Python toolkit for Rendezvous/Highest Random Weight (HRW) hash based routing.\n\n.. code-block:: pycon\n\n >>> import proxenos.mappers.consul\n >>> import proxenos.rendezvous\n >>> mapper = proxenos.mappers.consul.ConsulClusterMapper(\n ... host='localhost', port=8500)\n >>> mapper.update()\n >>> mapper.cluster\n {SocketAddress(host=IPAddress('::'), port=8000),\n SocketAddress(host=IPAddress('::'), port=8001),\n SocketAddress(host=IPAddress('::'), port=8300),\n SocketAddress(host=IPAddress('::'), port=8500)}\n >>> mapper.select('github.com', proxenos.rendezvous.HashMethod.SIPHASH)\n SocketAddress(host=IPAddress('::'), port=8001)\n\n.. code-block:: shell\n\n $ proxenos select -b consul -h localhost -p 8500 github.com\n 0.0.0.0:8300\n\nFeatures\n========\n\n* Support for multiple service discovery backends possible. *Currently\n only support for Consul is implemented, but other backends coming\n eventually.*\n* Supports many different hash functions and PRFs. The default hashing\n method is the `SipHash `_ PRF.\n* Provides a command-line interface for quickly testing/debugging\n node selection.\n\nInstallation\n============\n\n.. code-block:: shell\n\n $ pip install proxenos\n $ # If you'd like Murmur3 support, use:\n $ pip install proxenos[murmur]\n\nNotes\n=====\n\n**proxenos** uses Python's PRNG for calculating the weight of nodes in\na cluster, rather than using a linear congruential generator (LCG_)\nas described in the `original paper on Rendezvous hashing`__. Seeded\nweights generated are limited to ``sys.maxsize``, which means the\nresulting weights will differ depending on the platform architecture.\n\n.. _LCG: https://en.wikipedia.org/wiki/Linear_congruential_generator\n.. _thaler_ravishankar_1996: http://www.eecs.umich.edu/techreports/cse/96/CSE-TR-316-96.pdf\n\n__ thaler_ravishankar_1996_\n\nSimilar projects\n================\n\n* `clandestined `_\n* `nikhilgarg28/rendezvous `_\n\n\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/darvid/proxenos", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "proxenos", "package_url": "https://pypi.org/project/proxenos/", "platform": "", "project_url": "https://pypi.org/project/proxenos/", "project_urls": { "Homepage": "https://github.com/darvid/proxenos" }, "release_url": "https://pypi.org/project/proxenos/0.0.3/", "requires_dist": [ "attrs", "consulate", "netaddr", "siphash", "stevedore", "typing; python_version<\"3.5\"", "enum34; python_version==\"2.7\"", "consulate; extra == 'consul'", "mmh3; extra == 'murmur'" ], "requires_python": "", "summary": "proxenos: A rendezvous hashing and service routing toolkit.", "version": "0.0.3" }, "last_serial": 2596730, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "c31422037021016ca621314986914010", "sha256": "1cf9b9c5baa59e2af4e874da84ea77769112361f27cd36b952039594932cc4da" }, "downloads": -1, "filename": "proxenos-0.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c31422037021016ca621314986914010", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 30823, "upload_time": "2017-01-23T02:26:48", "url": "https://files.pythonhosted.org/packages/d4/d6/499a00c8d9a7c63e600f3a1d0abd7d9653a16aafb737319dc669fe2f8873/proxenos-0.0.1-py2.py3-none-any.whl" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "648fa552250dca9bbaa23dfa8d5a1978", "sha256": "06a24d159d609748343b9ef78aed33cbd8dd5e92c2a92d14ad596adf5b00d943" }, "downloads": -1, "filename": "proxenos-0.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "648fa552250dca9bbaa23dfa8d5a1978", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 31210, "upload_time": "2017-01-24T12:43:22", "url": "https://files.pythonhosted.org/packages/34/a7/d56cd6547cb68f599a5370e3c1b56e20fcb1a195d4351d219d6ec31d0caf/proxenos-0.0.2-py2.py3-none-any.whl" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "cd61cd12ef9ee48ff882551997c879fe", "sha256": "07f5d4adb852c9d88efaa9118987a0bf3c7fac3c6fbb2856de22c6e5a722dd4a" }, "downloads": -1, "filename": "proxenos-0.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "cd61cd12ef9ee48ff882551997c879fe", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 33404, "upload_time": "2017-01-25T04:18:28", "url": "https://files.pythonhosted.org/packages/da/cd/c082455bb19aff3bb48f548a867e185638e222ad038294ef312247cb62aa/proxenos-0.0.3-py2.py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "cd61cd12ef9ee48ff882551997c879fe", "sha256": "07f5d4adb852c9d88efaa9118987a0bf3c7fac3c6fbb2856de22c6e5a722dd4a" }, "downloads": -1, "filename": "proxenos-0.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "cd61cd12ef9ee48ff882551997c879fe", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 33404, "upload_time": "2017-01-25T04:18:28", "url": "https://files.pythonhosted.org/packages/da/cd/c082455bb19aff3bb48f548a867e185638e222ad038294ef312247cb62aa/proxenos-0.0.3-py2.py3-none-any.whl" } ] }