aiocluster
aiocluster is a Python 3.11+ module for distributed systems management, enabling cluster membership tracking, failure detection, configuration sharing, and metadata management. It facilitates scalable and fault-tolerant application sharding through robust cluster coordination capabilities.
References
- ScuttleButt paper: https://www.cs.cornell.edu/home/rvr/papers/flowgossip.pdf
- Phi Accrual error detection: https://www.researchgate.net/publication/29682135_The_ph_accrual_failure_detector
- chitchat https://github.com/quickwit-oss/chitchat/blob/main/README.md
Requirements
- Python 3.11+.
- protobuf
Usage
import asyncio
import logging
from aiocluster import Cluster
from aiocluster import Config
from aiocluster import NodeId
async def main():
node1_id = NodeId(name="simple1", gossip_advertise_addr=("127.0.0.1", 7000))
node2_id = NodeId(name="simple2", gossip_advertise_addr=("127.0.0.1", 7001))
node3_id = NodeId(name="simple3", gossip_advertise_addr=("127.0.0.1", 7002))
config1 = Config(
node_id=node1_id,
gossip_interval=1,
seed_nodes=[("127.0.0.1", 7002)],
cluster_id="simple-aiocluster",
)
config2 = Config(
node_id=node2_id,
gossip_interval=1,
seed_nodes=[("127.0.0.1", 7000)],
cluster_id="simple-aiocluster",
)
config3 = Config(
node_id=node3_id,
gossip_interval=1,
seed_nodes=[("127.0.0.1", 7001)],
cluster_id="simple-aiocluster",
)
cluster1 = Cluster(config1, initial_key_values={"cluster": "1"})
cluster2 = Cluster(config2, initial_key_values={"cluster": "2"})
cluster3 = Cluster(config3, initial_key_values={"cluster": "3"})
async with cluster1, cluster2, cluster3:
await asyncio.sleep(10)
if __name__ == "__main__":
logging.basicConfig(level=logging.DEBUG)
asyncio.run(main())
Metadata
Release files for aiocluster 1.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| aiocluster-1.1.0.tar.gz | 29.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| aiocluster-1.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 52.2 kB
Release files / aiocluster-1.1.0.tar.gz
| Download URL | aiocluster-1.1.0.tar.gz |
|---|---|
| Size | 29.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
25d7afd22a6e65a9ce00bb6b55b1495399f2638c5b6f1d9c8de34af1454e1dd2
|
|
BLAKE2b-256 checksum How to use checksums |
7b522540a5f93a9cc604d1807347ff572ddc6db8f426efc9723616d1702b467d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / aiocluster-1.1.0-py3-none-any.whl
| Download URL | aiocluster-1.1.0-py3-none-any.whl |
|---|---|
| Size | 23.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
403a52addf9516a1058350cd5bc933acdc746e170987ada125a110d18d9d2844
|
|
BLAKE2b-256 checksum How to use checksums |
6bb93b6adde46b31e37887dc433eee3405c32242e46ba5f7ccb37d6428cb12b9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|