Как получить URL-адрес ответа от объекта RPC в движке приложения Asynchronous Requests? - PullRequest
1 голос
/ 25 октября 2011
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 получен ответ?

1 Ответ

2 голосов
/ 25 октября 2011

Использовать обратный вызов:

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)
...