J'écris un service python (pyamf) à travers lequel un utilisateur peut accéder aux images. Toutes les images sont stockées sur un serveur central. Les services python seront exécutés sur des machines satellites qui ont un accès réseau au serveur. Le service doit fonctionner comme suit:Caching de fichier de service Python Apache Race Condition
- de vérifier localement si le fichier existe, si c'est le cas, utilisez-le.
- vérifiez localement si le fichier est en cours de transfert depuis le serveur (fichier.part existe et la taille change). Si c'est le cas, attendez la fin du téléchargement, puis utilisez le fichier.
- Si le fichier n'existe pas et que le fichier n'est pas en cours de téléchargement, téléchargez le fichier via urlretrieve.
Le problème provient des threads multiples d'Apache. Les threads atteignent la vérification de présence de fichiers en même temps et ils pensent tous que le fichier doit être téléchargé. Inutile de dire que ce n'est pas bon.
Quelle est la bonne façon de gérer ces conditions de course?
Merci!