#python #google-app-engine #asynchronous #urlfetch
# #python #google-app-engine #асинхронный #urlfetch
Вопрос:
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:
Используйте обратный вызов:
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)