Вызов memcache.set_multi_async не сохраняет значения
В настоящее время я использую Google memcache API в своем приложении Google Appsengine для хранения большого объема данных в кеше, однако это должно происходить асинхронно, так как мне нужно вернуть результат до того, как это будет сделано.
Я уже нашел здесь ответ о том, как это делается, однако я все еще не могу заставить свой код работать.
Я попытался использовать это, однако это просто заставляет memcache хранить значения синхронно:
client = memcache.Client()
rpc = client.set_multi_async(values)
rpc.get_result()
return values[id]
Я также попробовал это, но это заставляет memcache никогда не сохранять значения:
client = memcache.Client()
client.set_multi_async(values, rpc=memcache.create_rpc())
return values[id]
Есть ли способ хранить значения асинхронно и возвращать значение одновременно? Спасибо
1 ответ
rpc.get_result()
заставляет объект rpc ждать, пока результат не станет доступен, прежде чем возвращаться, что делает ваш код синхронным. Чтобы сделать ваш код асинхронным, вам нужно вернуть объект (ы) rpc, а затем использовать класс Future для ожидания и обработки результатов, когда они будут готовы.