python SimpleXMLRPC中远程函数的yield或log

2024-09-30 06:11:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过Python中的XMLRPC调用一个长(耗时)函数。在

我的服务器.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()

还有我的客户端.py公司名称:

^{pr2}$

有没有一种方法可以在完成之前查看hello()函数在客户端的进度(例如日志记录)?在


Tags: 函数pyimport名称true客户端helloserver
1条回答
网友
1楼 · 发布于 2024-09-30 06:11:17

这里有一个similar question在SO上,试图达到同样的效果。引用其accepted answer

If you want XML-RPC with long-running, early returning tasks, you probably need to rewrite your server into an asynchronous framework, like twisted

2nd answer from that显示了在XMLRPCServer中正确实现yield的方法。Esp,因为当前代码给出错误:xmlrpclib.Fault: <Fault 1: "<type 'exceptions.TypeError'>:cannot marshal <type 'generator'> objects">。在

相关问题 更多 >

    热门问题