我正在寻找一种通过 TCP 轮询许多服务器以了解其状态的好方法。我目前正在使用同步代码和 Minecraft 查询协议,但是每当服务器离线时,队列的其余部分都会被阻塞。
我当前代码遇到的另一个问题是,某些服务器倾向于阻止我用于在其防火墙中轮询的服务器,因此它们的服务器在我的服务器列表中显示为脱机。
我正在使用带有无限循环的 Ruby rake 任务,其中我的 MongoDB 数据库中的每个 Minecraft 服务器每 +- 10 分钟进行一次检查和更新(我尝试通过让循环休眠(600/ s.count.to_i).ceil
几秒钟来设置此间隔。
有什么方法可以有效地完成这项任务(并防止服务器在他们的防火墙中将我的 IP 列入黑名单),最好使用 Ruby 中的异步代码?