Bonjour,
Contexte :
Je souhaite limiter à 5 images par articles.
L'ajout d'une photo se fait en ajax en appellant /api/add_picture.
Dans api/add_picture, je fait ceci :
1) Compte le nombre de photos (1ms)
2) S'il y en a déjà 5 : rejet de la photo, et on arrête là.
3) Traitement de la photo (100ms)
4) Ajout de la photo (1ms)
En pratique, l'utilisateur sélectionne ses photos et envoi tout en même temps. L'api est appelée autant de fois qu'il y a de photos, le tout en parallèle.
Problème :
Lorsque l'utilisateur essai d'envoyer 10 photos en même temps, j'ai toujours quelques photos en plus alors que je veux limiter à 5. Je comprends bien le problème : certaines requêtes sont déjà à l'étape de traitement, mais pas encore ajoutée, au moment où les dernières sont encore en train de compter le nombre de photos. Elles passent le test sans être rejetées, et font finalement dépasser mon nombre de photos.
Mauvaises solutions :
J'ai pensé à deux solutions, mais elles ne fonctionnent pas :
1) Faire le traitement avant le comptage pour diminuer l'intervale qui pose problème. Ca limite un peu.
2) Faire un comptage à la fin et supprimer la photo en cours d'ajout si le quota est dépassé. Cette fois on risque de supprimer la photo dans l'intervalle entre le comptage et la suppression d'une autre requête. Il nous manquerait une photo.
Demande d'aide :
Pouvez-vous s'il vous plait m'aider à trouver une solution qui rejète systématiquement tout ce qui dépasse 5 photos, sans jamais en rejeter une de trop ? Je développe mon site avec django et l'ajout d'une photo consiste à enregistrer le fichier et à ajouter une élément dans ma BDD.
Je vous remercie pour votre aide.
David
Partager