twisted:一个客户端,多服务器

7 投票
1 回答
2803 浏览
提问于 2025-04-16 00:53

我正在尝试使用twisted这个工具,来创建一个计算机集群,让它们在一部分更大数据集上运行同一个程序。

我的“服务器”会从客户端接收一块数据,然后对这块数据执行命令x。

我的“客户端”会连接到多个服务器,给每个服务器一块数据,并告诉它们用什么参数来执行命令x。

我想问的是:有没有办法设置反应器循环,让它连接到很多服务器:

reactor.connectTCP('localhost', PORT, BlastFactory())
reactor.run()

还是说我需要在我的思路中把客户端和服务器的位置互换一下?

1 个回答

9

你只需要多次调用 connectTCP 就可以了。

这里的关键是,reactor.run() 会一直运行下去(也就是你程序的整个运行时间),所以你不想多次调用它。

你有几种选择;你可以设置一个定时调用来进行未来的连接,或者你可以在连接发生某些事件时(比如 connectionLostclientConnectionFailed)来启动新的连接。

或者,最简单的方法就是在 reactor.run() 开始之前,先设置好多个连接尝试,就像这样:

for host in hosts:
    reactor.connectTCP(host, PORT, BlastFactory())
reactor.run()

撰写回答