Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BACKEND] Allow multiple "load_spire_data_from_api" instance in parallel (only one request) #404

Open
rv2931 opened this issue Jan 7, 2025 · 0 comments
Assignees

Comments

@rv2931
Copy link
Collaborator

rv2931 commented Jan 7, 2025

Pour fiabiliser l'interrogation des données Spire via API, je propose de mettre en place un mécanisme qui permet de coordonner plusieurs instance du script load_spire_data_from_api en utilisant les données présentes en BDD dans la table taskExecutions
Le principe de fonctionnement est:

  • au lancement de la tâche load_spire_data_from_api, on vérifie que la tâche la plus récemment exécutée a été exécutée il y a plus de 1( minutes (ajout du paramètres settings.api_pooling_period=15m par défaut)
  • si une une ligne existe avec un point_in_time plus récent alors notre tâche ne fait rien est se termine pour laisser la tâche en cours exécuter l'interrogation Spire API
  • si aucune ligne existe avec un point_in_time plus récent que 15 minutes alors notre tâche continue en enregistrant sa propre ligne en base avec un nouveau point_in_time avec la date courante, ce qui empêchera les autres instance load_spire_data_from_api de s'exécuter pendant 15 minutes (par défaut)
  • Si d'aventure une erreur apparait lors de l'exécution, alors on rollback tout ce qui était en cours et on supprime la ligne qui avait été ajoutée au lancement pour signifier aux autres tâches qu'elles peuvent se lancer

En faisant en sorte que les tâches load_spire_data_from_api se lancent toutes les 15 minutes mais sur des minutes différentes (0, 5, 10 par exemple) on aura donc plusieurs machines qui peuvent interroger Spire mais seulement une requête ne sera réellement exécutée par tranche de 15/20 minutes

Cela permet de fiabiliser un peu l'interrogation par contre ça ne permet pas de se prémunir d'un problème sur la machine hébergeant la BDD
Ce mécanisme a été ajouté dans la PR #399 avec l'issue #398
Les deux sont à valider

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant