python-如何一次对不同的xmlrpc服务器进行多个xmlrpc调用
作者:互联网
有没有办法一次从xmlrpc客户端到不同的xmlrpc服务器进行多次调用.
我的服务器代码如下所示:(我将在两台服务器(服务器1和服务器2)中运行此代码)
class TestMethods(object):
def printHello(self):
while(1):
time.sleep(10)
print "HELLO FROM SERVER"
return True
class ServerThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.server = SimpleXMLRPCServer(("x.x.x.x", 8000))
self.server.register_instance(TestMethods())
def run(self):
self.server.serve_forever()
server = ServerThread()
server.start()
我的客户代码如下所示:
import xmlrpclib
client1 = xmlrpclib.ServerProxy("http://x.x.x.x:8080") # registering with server 1
client2 = xmlrpclib.ServerProxy("http:/x.x.x.x:8080") # registering with server 2
ret1 = client1.printHello()
ret2 = client2.printHello()
现在,在第10秒,我将收到server1的响应,而在第20秒,我将收到server2的响应,不幸的是,这不是我想要的.
我试图一次调用两台计算机,以便一次从这两台计算机获得响应.
请帮帮我,谢谢.
解决方法:
有几种不同的方法可以做到这一点.
是用于并行运行内容的内置python模块.该文档是相当清楚的.最简单的使用此方法最可扩展的方法是对“工人池”进行操作,您可以根据需要添加任意数量的工人.
from multiprocessing import Pool
import xmlrpclib
def hello_client(url):
client = xmlrpclib.ServerProxy(url)
return client.printHello()
p = Pool(processes=10) # maximum number of requests at once.
servers_list = ['http://x.x.x.x:8080', 'http://x.x.x.x:8080']
# you can add as many other servers into that list as you want!
results = p.map(hello_client, servers_list)
print results
twisted python是一个了不起的聪明系统,用于编写各种多线程/并行/多进程的东西.该文档有点混乱.
另一个非阻塞的python框架.也很酷.关于XMLRPC,Python和龙卷风的Here’s an answer.
一种允许在python中阻止任务执行的“魔术”方式.非常非常酷. here’s a question关于如何在带有gevent的python中使用XMLRPC.
标签:xml-rpc,python-multithreading,simplexmlrpcserver,xmlrpclib,python 来源: https://codeday.me/bug/20191029/1959047.html