我们在多个国家(日本、香港、新加坡等)设有多个数据中心。
我们在每个位置的多台主机上运行应用程序 - 总共可能大约 50-100 台主机。
我正在编写一个 Python 脚本,该脚本查询每个应用程序的状态,向它们发送各种触发器,并在运行时从它们中检索其他内容。可以想象,该脚本可以查询中央服务器,然后中央服务器将请求发送到每个主机上运行的代理。
要求之一是脚本尽可能响应 - 例如,如果我查询所有位置的所有主机上的应用程序状态,我希望在 1-3 秒内得到结果,而不是 20-30 秒。
因此,按顺序查询每个主机会太慢,特别是考虑到我们需要进行的 WAN 跃点。
我们可以假设对每个主机本身的查询是相当微不足道的(例如进程是否正在运行)。
我对并发编程或异步编程相当陌生,所以在这里会重视任何输入。解决这个问题的“最佳”方法是什么?
- 使用多线程或多进程方法 - 例如为每个主机生成一个新线程,将它们全部发送出去,然后等待回复?
- 使用 asyncore、twisted、tornado - 任何适合此处的评论?(我的印象是 asyncore 并不那么受欢迎。Tornado 尝试起来可能很有趣,但不确定如何在这里使用它?)
- 使用某种消息队列(例如 Kombu/RabbitMQ)?
- 不知何故用芹菜?对于我们想要的响应时间,它是否足够响应?(例如,上述情况不到 3 秒)。
干杯,维克多