Skip to main content

A high-performance inter-process communication library designed to handle communication between multiple shards

Project description

Better Cluster

A high-performance inter-process communication library designed to handle communication between multiple bots/web applications

This library is made to handle mulltiple discord clients. If you want something simpler or have only one client, check out better-ipc

Installation

Stable version

For Linux

python3 -m pip install -U better-cluster

For Windows

py -m pip install -U better-cluster

Development version

For Linux

python3 -m pip install -U git+https://github.com/MiroslavRosenov/better-cluster

For Windows

py -m pip install -U git+https://github.com/MiroslavRosenov/better-cluster

Support

You can join the support server here

Examples

Example of a cluster

import asyncio
from discord.ext.cluster import Cluster

if __name__ == "__main__":
    cluster = Cluster()
    asyncio.run(cluster.start())

Example of a shard

import asyncio
import discord

from discord.ext.cluster import Shard, ClientPayload
from discord.ext import commands

class MyBot(commands.Bot):
    def __init__(self) -> None:
        intents = discord.Intents.all()

        super().__init__(
            command_prefix="$.",
            intents=intents
        )

        self.shard = Shard(self, shard_id=1)

    async def setup_hook(self) -> None:
        await self.shard.connect()

    @Shard.route(shard_id=1)
    async def get_user_data(self, data: ClientPayload):
        user = self.get_user(data.user_id)
        return user._to_minimal_user_json()

if __name__ == '__main__':
    bot = MyBot()
    asyncio.run(bot.run(...))

Example of web client

from quart import Quart
from discord.ext import cluster

app = Quart(__name__)
ipc = cluster.Client()

@app.route('/')
async def main():
    return await ipc.request("get_user_data", 1, user_id=383946213629624322)

if __name__ == '__main__':
    app.run(port=8000, debug=True)

Project details


Download files

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

Source Distribution

better-cluster-1.0.0.tar.gz (8.4 kB view details)

Uploaded Source

Built Distribution

better_cluster-1.0.0-py3-none-any.whl (10.1 kB view details)

Uploaded Python 3

File details

Details for the file better-cluster-1.0.0.tar.gz.

File metadata

  • Download URL: better-cluster-1.0.0.tar.gz
  • Upload date:
  • Size: 8.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.6

File hashes

Hashes for better-cluster-1.0.0.tar.gz
Algorithm Hash digest
SHA256 670ddca9932ab2ced45e9ac19e3d6a5f25222715a7f83e29423f447b2f2ab44e
MD5 867d3774f5c13ab712024b26402cde39
BLAKE2b-256 94785b5291641e2dd4c27eb6855e885c085daefb4e0337d28b652caa9a254b99

See more details on using hashes here.

File details

Details for the file better_cluster-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for better_cluster-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 04bdeae67100e8f94bfbf8363b141bb0b592372aaabbc290edb58d64660d74ef
MD5 0fc080c6fd783f8cb6f680497b54eb14
BLAKE2b-256 ca9e8743975025a4a9a7513a2e2c4b23a1fad9ac12fe7ef69461c2c492f36430

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page