0

J'utilise actuellement l'API Google memcache dans mon application Google Appsengine pour stocker une grande quantité de données dans le cache, mais cela doit se faire de manière asynchrone, car je dois retourner un résultat avant c'est fait.L'appel de memcache.set_multi_async ne sauvegarde pas les valeurs

J'ai déjà trouvé une réponse here indiquant comment cela est fait, mais je n'arrive toujours pas à faire fonctionner mon code.

J'ai essayé d'utiliser cela, mais il provoque simplement memcache être stocker les valeurs de manière synchrone:

client = memcache.Client() 
rpc = client.set_multi_async(values) 
rpc.get_result() 
return values[id] 

J'ai essayé aussi, mais il provoque memcache de ne jamais enregistrer les valeurs:

client = memcache.Client() 
client.set_multi_async(values, rpc=memcache.create_rpc()) 
return values[id] 

Est-il possible de stocker les valeurs de manière asynchrone et de renvoyer une valeur en même temps? Merci

+0

Copie possible de [opération asynchrone d'App Engine memcache get \ _multi \ _async] (http://stackoverflow.com/questions/7601471/app-engine-memcache-async-operation-get-multi-async) –

Répondre

0

rpc.get_result() provoque l'objet rpc d'attendre jusqu'à ce que le résultat est disponible avant de retourner, rendant ainsi votre code synchrone. Afin de rendre votre code asynchrone, vous devrez retourner l'objet rpc et ensuite utiliser le Future class pour attendre et gérer les résultats quand ils sont prêts.

+0

Pourriez-vous peut-être montrer un exemple de la façon dont cela est mis en œuvre que je suis complètement coincé sur la documentation de Google, merci! – Paradoxis

+0

Il y a un exemple [ici] (https://cloud.google.com/appengine/docs/python/ndb/async) - est-ce que cela aide? – tx802