0

本质上,我将调用远程 XMLRPC 服务器,它将异步处理请求。

import xmlrpclib

client = xmlrpclib.ServerProxy('http://localhost:8080')

client.add(3,5)


def add_result(result):
    print result

我知道在将来某个时候 add_result 会被调用结果。事情是。我希望能够将调用 client.add 转换为将返回结果的阻塞调用。我正在为将调用我的 GUI 执行此操作。问题是我应该在哪里阅读有关这种解决方案的信息?我不确定从哪里开始。

我认为我根本没有很好地解释自己。我正在调用的服务器正在实现异步部分。当我调用 add 时,它将返回 true。而且我知道服务器希望我实现 add_result ,这就是它对我的要求。我要做的是清理这个疯狂的计划,以便有人可以对我调用 add 并且我将阻止直到 add_result 对我调用,然后我将返回给任何打电话给我的人。我希望这可以解决问题

4

2 回答 2

0

你的说法是无稽之谈。xmlrpclib 操作是同步和阻塞的。为了执行异步操作等,您需要使用线程来实现某些东西。

于 2011-02-25T19:07:28.797 回答
0

我同意pynator...

但是,如果您在阻挡件上需要帮助......阻挡的设计非常简单:

class GUI():
    def __init__(self):
        self.blocking_thread = Thread(target=self.get_data)
        self.client = xmlrpclib.ServerProxy(...)

    def  query_for_data():
         self.blocking_thread.start()
         self.blocking_thread.join()

    def get_data(self):
        while(True):
            #this assumes this returns some how and doesn't block..
            result = self.client.add(...)
            if(result): break;

            time.sleep(1)
于 2011-02-25T19:12:38.253 回答