dataforgoodfr / 12_bloom

23 stars 11 forks source link

[BACK] méthode list_all_vessel_last_position ne renvoie pas la dernière position #251

Open marthevienne opened 3 days ago

marthevienne commented 3 days ago

Les positions récupérées via la méthode list_all_vessel_last_position dans /routers/V1/vessels.py va chercher la position de fin du dernier segment calculé pour chaque navire. Le problème est que le calcul des segments ne se fait pas à chaque call API.

Pour l'instant, le lancement du pipeline de transformation se fait manuellement par @njouanin (tous les 2 jours environ ?). Si nous pouvons lancer la pipeline de transformation des données Spire toutes les 15 min, alors on peut supposer que la end_position du dernier segment est en effet la dernière position reçue. Sinon, on va devoir lancer une autre tâche intermédiaire juste pour stocker temporairement les dernières positions.

rv2931 commented 3 days ago

Ok. Le souci que je vois c'est surtout qu'on va avoir les dernières positions si on va les chercher dans les données sources mais qu'on aura aucune autre information à jour (ni segment, ni excursion, ni temps passé sur amp, et pas de nettoyage/validation des positions...) Y a-t-il une raison particulière pour laquelle le pipeline de transfos ne se fait pas tout les 15 minutes aussi ? de mémoire c'est ce qui était prévu tant qu'il durait significativement moins de 15 minutes ou je me trompe ? Mais si c'est préférable d'aller chercher la dernière position je vais changer ça pas de souci

njouanin commented 3 days ago

Non il faut bien que tu ailles chercher les dernières positions dans fct_segment. D'ailleurs il y a une colonne qui indique si un segment est le dernier segment d'une excursion. En cible le traitement doit bien se lancer tous les 1/4 d'heure mais jusqu'à présent on n'a pas pu configurer le cron de clever, je dois regarder. Du coup pour l'instant comme l'a dit Marthe c'est moi qui lance le traitement manuellement de manière plus ou moins régulière. => j'essaye de regarder cette histoire demain.

marthevienne commented 2 days ago

Ok, je pensais que ça serait impossible de faire tourner l'ETL toutes les 15 min. J'ai bien compris comment marche la méthode. Parfait :) Si besoin de mettre en place le cron, je peux le faire vu que je l'ai fait pour ipolitics sur clevercloud.

rv2931 commented 2 days ago

Pour les cron @SaboniAmine a déjà mis un a priori Mais effectivement il ne concerne que la récupération des positions https://github.com/dataforgoodfr/12_bloom/blob/main/clevercloud/clever.json

marthevienne commented 2 days ago

Ah yes ! Il a repris ce que j'avais fait ! Cool :) On en discute ensemble Nicolas quand tu veux.

njouanin commented 2 days ago

Il faut exécuter (toutes les 15 minutes) successivement et dans cet ordre les traitements:

On peut mettre ça dans un shell et programmer un cron toutes les 15 minutes. Peut-être entouré d'un flock pour éviter que le script se relance s'il est encore encore en cours au bout de 15 minutes.

SebM42 commented 2 days ago

Et je précise également qu'il est très important que si un des scripts est interrompu pour n'importe quelle raison, aucun autre traitement futur ne doit être lancé

marthevienne commented 2 days ago

Closed. Nouvelle issue plus générale #254