2011-10-24 72 views
1
rpcs = [] 
for url in urls: 
    rpc = urlfetch.create_rpc(deadline=5.0) 
    urlfetch.make_fetch_call(rpc, url) 
    rpcs.append(rpc) 
while len(rpcs) > 0: 
    rpc = apiproxy_stub_map.UserRPC.wait_any(rpcs) 
    res = rpc.get_result() 
    if res.status_code == 200: 
    ...... do something with result 
    rpcs.remove(rpc) 

如何确定从什么网址收到响应?如何从异步请求App引擎中的RPC对象获取响应URL?

回答

1

使用回调:

def handle_result(rpc, url): 
    ..... [your code goes here] 

def create_callback(rpc, url): 
    return lambda: handle_result(rpc, url) 

rpcs = [] 
for url in urls: 
    rpc = urlfetch.create_rpc(deadline=5.0) 
    rpc.callback = create_callback(rpc, url) 
    urlfetch.make_fetch_call(rpc, url) 
    rpcs.append(rpc) 

while rpcs: 
    rpc = apiproxy_stub_map.UserRPC.wait_any(rpcs) 
    rpcs.remove(rpc) 
相关问题