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)

如何确定从哪个 url 收到响应?

4

1 回答 1

2

使用回调:

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)
于 2011-10-24T20:28:17.760 回答