AutoShardedBot在discord.py中如何工作?

问题描述

有人会解释分片的工作原理,特别是discord.ext.commands.AutoShardedBot吗? 我在下面提出了多个问题:

  • 它可以在多台服务器上运行吗?
  • 如果没有,将其分片有什么好处?
  • 公会有时在碎片之间切换吗?
  • 如果漫游器在多台服务器上运行,如何使用一个数据库

感谢您的时间。

解决方法

  1. 如果用“多个服务器”表示物理机,不,这是一个 单个python实例。
  2. 我认为Discord需要经过一定数量的行会分片 2 / 2.5k。
  3. 公会由(guild_id >> 22) % shard_count分配给分片
  4. 使数据库可通过网络访问,请确保对其进行保护 并使用强密码,从每个密码连接。

如果需要将其拆分为多台计算机,则可以将shard_idshard_count传递给普通的Bot实例。

Discord Docs on Sharding

,

我最初担心的是commands.AutoShardedBot将是多线程的,并且我的锁定方法不是线程安全的。 commands.AutoShardedBot原来不是线程的,只是commands.Bot

的直接替代品