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收到响应?

最佳答案

使用回调:

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)

08-06 10:06