Вызов 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 для ожидания и обработки результатов, когда они будут готовы.

Другие вопросы по тегам