首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从python SimpleXMLRPCServer中的远程函数生成或日志

从python SimpleXMLRPCServer中的远程函数生成或日志
EN

Stack Overflow用户
提问于 2014-05-02 14:51:48
回答 1查看 855关注 0票数 1

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

我的server.py:

代码语言:javascript
复制
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:

代码语言:javascript
复制
import xmlrpclib

HOST, PORT = "localhost",   19989

if __name__ == "__main__":
    my_server = xmlrpclib.ServerProxy('http://{}:{}'.format(HOST, PORT))
    print my_server.hello()

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

EN

回答 1

Stack Overflow用户

发布于 2014-05-02 15:36:59

这里有一个相似问题,试图达到同样的效果。引用其接受答案

如果希望XML-RPC具有长期运行的早期返回任务,则可能需要将服务器重写为异步框架,如扭曲

第二次回答展示了一种在XMLRPCServer中正确实现yield的方法。因为您的当前代码提供了错误:xmlrpclib.Fault: <Fault 1: "<type 'exceptions.TypeError'>:cannot marshal <type 'generator'> objects">

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23431015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档