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 hashes)

Uploaded Source

Built Distribution

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

Uploaded Python 3

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