在Python SimpleXMLRPCServer中从远程函数返回yield或log
我正在尝试通过XMLRPC在Python中调用一个耗时很长的函数。
这是我的server.py:
import time
import SocketServer
import SimpleXMLRPCServer
PORT = 19989
class MyXMLRPCServer(SocketServer.ThreadingMixIn, SimpleXMLRPCServer.SimpleXMLRPCServer):
pass
def hello():
for x in xrange(10):
yield "hello {}".format(x)
time.sleep(1)
if __name__ == "__main__":
server = MyXMLRPCServer(("", PORT),
requestHandler=SimpleXMLRPCServer.SimpleXMLRPCRequestHandler,
logRequests=True,
allow_none=True)
server.register_function(hello)
server.serve_forever()
这是我的client.py:
import xmlrpclib
HOST, PORT = "localhost", 19989
if __name__ == "__main__":
my_server = xmlrpclib.ServerProxy('http://{}:{}'.format(HOST, PORT))
print my_server.hello()
有没有办法在客户端看到hello()
函数的进度(比如记录日志),在它完成之前?