本质上,我将调用远程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_result,然后我会回到谁给我打电话。我希望这可以解决问题
答案 0 :(得分:0)
你的主张是无稽之谈。 xmlrpclib操作是同步和阻塞的。要执行异步操作等,您需要使用线程实现一些东西。
答案 1 :(得分: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)