Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 水平缩放discord.py_Python_Discord_Discord.py - Fatal编程技术网

Python 水平缩放discord.py

Python 水平缩放discord.py,python,discord,discord.py,Python,Discord,Discord.py,我希望允许我的discord.py机器人水平扩展以获得额外的可靠性 我知道AutoSharedClient之类的东西,这将是一种很好的方法,但我不确定它是否能跨多个实例工作。有没有一个合理简单的方法来实现这一点?如果是的话,你能给我一些建议吗 扩展硬件很好,我已经准备好了,我只需要一些方法让机器人自己切分,然后让它确保每个公会只分配一个切分,不管我运行的机器人实例有多少。是的 #实例一 mybot=commands.autosharedbot(shard_count=8,shard_id=[0,

我希望允许我的discord.py机器人水平扩展以获得额外的可靠性

我知道AutoSharedClient之类的东西,这将是一种很好的方法,但我不确定它是否能跨多个实例工作。有没有一个合理简单的方法来实现这一点?如果是的话,你能给我一些建议吗

扩展硬件很好,我已经准备好了,我只需要一些方法让机器人自己切分,然后让它确保每个公会只分配一个切分,不管我运行的机器人实例有多少。

是的

#实例一
mybot=commands.autosharedbot(shard_count=8,shard_id=[0,1,2,3],…)
mybot.run(令牌)
#实例二
mybot=commands.autosharedbot(shard_count=8,shard_id=[4,5,6,7],…)
mybot.run(令牌)

碎片0、1、2和3将在第一个实例上运行,其他碎片4将在第二个实例上运行。这段代码并不是你应该怎么做的,但它展示了一般的概念。

你为什么希望1对1公会进行切分,有什么原因/好处吗?我在同一条船上,试图横向扩展我的机器人,所以我只是想听听一些见解。我不想让1比1的公会对碎片,但我希望能够有多个容器运行机器人,因为它更具容错性和可扩展性。目前我认为我可能必须使用手动切分,并将切分配置从中央系统somwhere传递到每个容器。我明白了。我找不到关于运行同一个bot的多个实例的足够信息,因此我通过将所有计算函数转换为一个外部API,并在集群中运行多个API节点来扩展bot,并实现负载平衡。我不知道这是否是正确的方法,但至少它可以很好地扩展。这实际上也是我所做的,但我仍将尝试使它在某个点上可以扩展。您如何能够将此扩展到
n
您不知道可能获得的公会数量?有没有办法在运行时动态获取不同的实例?@12944qwerty这是由AutoSharedClient自动处理的。要使用的碎片id由两个变量决定:碎片数量和公会id。上面的代码可以在两个集群和8个碎片上运行并启动bot。如果需要9个或更多碎片,会发生什么?这是一个很好的解释。我想我可能可以将它连接到我的API和数据库来协调切分。@12944qwerty您可以更改切分ID的值以包含一个额外的切分,并将两个类的切分计数都更改为9。