1

J'ai ce code en utilisant Python avec --high_replication --use_sqlite:réplication élevé supprimer retard dans le serveur local

def delete(self, id): 
    product = Product.get_by_id(long(id)) 
    if product is None: 
     self.session.add_flash('Product could not be found', level='error') 
     self.redirect_to('products') 
    else: 
     product.key.delete() 
     self.session.add_flash('Product is deleted') 
     self.redirect_to('products') 

Après la supprimer rediriger vers la page « produits » qui est essentiellement une page interrogation tous les produits et les afficher.

La seule chose que j'ai découvert est qu'il affiche aussi l'enregistrement supprimé. Lorsque j'actualise la page 'produits', l'enregistrement est parti.

Y a-t-il d'autres personnes qui font face à cela aussi et y a-t-il quelque chose que je puisse faire?


Edit1:

Je vois ce comportement que BTW local, sur les infrastructures de production ce n'est pas le cas. Je résolu dans le passé pour Java sdk utilisant le arg jvm suivant:

-Ddatastore.default_high_rep_job_policy_unapplied_job_pct=20 

Est-ce que Python sdk a quelque chose de similaire pour simuler la quantité de cohérence à terme que vous voulez que votre application pour voir localement?

Voir https://developers.google.com/appengine/docs/java/tools/devserver

Répondre

2

Qu'est-ce que vous voyez est le comportement de consistance du développement des ressources humaines datastore, que le devserver simule.

https://developers.google.com/appengine/docs/python/datastore/queries#Data_Consistency

Dans une requête éventuellement cohérente, les indices utilisés pour recueillir les résultats sont également accessibles avec cohérence à terme. Par conséquent, de telles requêtes peuvent parfois renvoyer des entités qui ne correspondent plus aux critères de requête d'origine, tandis que les requêtes fortement cohérentes sont toujours cohérentes sur le plan transactionnel.

+0

Comme une solution de contournement mais peut-être assez bonne, vous pouvez modifier cette dernière ligne à quelque chose comme self.redirect_to ('products? But_do_not_show =% s'% id) et ensuite faire fonctionner ce param. –

+0

Voir mon commentaire Edit1. Cela a-t-il un sens? –

+0

Il y a ce param pour devappserver2, datastore_consistency_policy. Cela peut toujours arriver dans appspot, parfois c'est assez rapide que ça arrive au hasard. Le devserver force le problème pour que vous le manipuliez correctement. –

Questions connexes