Un dictionnaire de niveau de module 'd' auquel accèdent différents threads/demandes dans une application Web django. J'ai besoin de mettre à jour 'd' chaque minute avec une nouvelle donnée et le processus prend environ 5 secondes.Mise à jour d'un dictionnaire partagé de niveau module
Quelle pourrait être la meilleure solution où je veux que les utilisateurs obtiennent soit l'ancienne valeur ou la nouvelle valeur de d et rien entre les deux.
Je peux penser à une solution où un dictionnaire temporaire est construit avec de nouvelles données et assigné à 'd' mais je ne sais pas comment cela fonctionne!
Appréciez vos idées.
Merci
Les utilisateurs doivent-ils attendre lorsque d est en cours de modification ou peuvent-ils toujours obtenir l'ancienne valeur de d? – Vishal
@Vishal, ils doivent attendre les quelques microsecondes qu'il faut pour obtenir le verrou - je doute que quelqu'un le remarquera jamais ;-). Cela prendrait beaucoup plus de temps pour "prendre un instantané", et si deux threads le font et que chacun sauvegarde atomiquement sa version modifiée, les modifications d'un thread seront totalement perdues (même si elles sont complètement différentes & c - elles disparaîtront dans l'éther). –
@Alex, Que se passe-t-il si la mise à jour de d prend quelques secondes, alors les threads attendent pour obtenir le verrou? ou vouliez-vous dire assigner temp à d comme dans la question? – Vishal