twisted:一个客户端,多服务器
我正在尝试使用twisted这个工具,来创建一个计算机集群,让它们在一部分更大数据集上运行同一个程序。
我的“服务器”会从客户端接收一块数据,然后对这块数据执行命令x。
我的“客户端”会连接到多个服务器,给每个服务器一块数据,并告诉它们用什么参数来执行命令x。
我想问的是:有没有办法设置反应器循环,让它连接到很多服务器:
reactor.connectTCP('localhost', PORT, BlastFactory())
reactor.run()
还是说我需要在我的思路中把客户端和服务器的位置互换一下?
1 个回答
9
你只需要多次调用 connectTCP
就可以了。
这里的关键是,reactor.run()
会一直运行下去(也就是你程序的整个运行时间),所以你不想多次调用它。
你有几种选择;你可以设置一个定时调用来进行未来的连接,或者你可以在连接发生某些事件时(比如 connectionLost
或 clientConnectionFailed
)来启动新的连接。
或者,最简单的方法就是在 reactor.run()
开始之前,先设置好多个连接尝试,就像这样:
for host in hosts:
reactor.connectTCP(host, PORT, BlastFactory())
reactor.run()