-
Notifications
You must be signed in to change notification settings - Fork 11
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
[BACK] Référencer les coupures du back / délai call API #303
Comments
Proposition :
|
Dans les évolutions à prévoir je pense qu'un véritable traitement par lot serait intéressant et permettrait entre autre de gérer ce genre de chose Idéalement pour faire ça, faudrait passer par des vrais outils du genre Airflow/Dagster ou autre. En attendant on peut bricoler des trucs qui ne ferait non pas que tracer ce qui a été fait, mais planifier les slots sur les 24 prochaines heures par exemple avec leurs paramétrage (date de référence de l'interrogation, période interrogée, statut...) et avoir une info de chaque slot du genre "planifié", "en cours", "succès"/"error" Après ça repose la question: est-ce qu'on bricole un truc qui ferait comme, ou est-ce qu'on utilise un outil fait pour ça |
Le sujet porte sur les interruptions d'appel à l'API de Spire, et à ma connaissance, si on rate un appel API pour n'importe quelle raison (sic : BDD pleine, facture impayée (oups), maintenance), alors de toute facon les données sont perdus car on ne peut pas remonter le temps |
Oui, effectivement, j'ai pas regardé l'API spire les paramètres qu'on avait sur l'API spire mais ça vaudrait le coup d'y jeter un oeil voir si le traitement par lot et récupération reste envisageable |
Je peux bricoler un truc pour enregistrer les gap de manière assez simple pour l'instant pour ne bloquer l'archivage des données AIS. C'était surtout pour vous sonder sur la question. |
Du coup, dans la doc publique, on a bien les paramètres updated_after et updated_before. C'est généralement les parmaètres qui permettent de faire du traitement par lot maintenant il y a sûrement des limites techniques ou contractuelles que je n'ai pas Sachant que souvent il n'y a que updated_after mais ce n'est pas trop grace car finalement si t'interroge sur -1h, en séparant les infos tu récupère finalement les infos pour 4 slots de 15min, ce qui permet de garder une gestion par slots mais de réduire le nombre d'interrogation |
Si on a cette possibilité, c'est assez lourd à faire, puisque la structure des données qu on recevra alors de Spire sera bien différente. Il faudra donc convertir ces données en un batch structuré à passer dans l'ETL. J'imagine également que Spire à une limite dans son historique, il faudra également vérifier que cette limite est suffisamment grande pour couvrir les périodes manquantes, sinon il faudra également prévoir le cas ou la période manquante est supérieure à cette limite (cf ma proposition pour ce cas) Je suggère de faire un easy fix à échéance moyenne pour commencer, et se pencher sur la récupération d'un historique spire à échéance plus longue. |
J'ai regardé comme on trace les exécutions des tâches aujourd'hui et j'aurais une proposition à faire pour tracer les exécutions des call API de la même manière mais en ajoutant une historisation
Au final, on l'historique d'exécution complet de toutes les tâches et donc on peut facilement détecter les périodes ou la task load_spire_data_from_api ne s'est pas exécutée pendant plus de 15 minutes |
oui, ça me va de tracer les exécutions et l'historique des traitements. Ca permettrait effectivement de détecter les trous qui ont pour origine une mauvaise exécution côté back. |
C'est en prod ! Bravo ! |
Les segments DEFAULT_AIS sont déterminés sur la base d'un délai de plus de 30 min (ou 29 min) entre 2 positions successives.
En fouillant dans les données de spire_ais_data, on peut voir parfois que des données n'ont pas été créées toutes les 30 min (gap). Cela arrive même assez souvent. On a donc l'impression d'avoir un tas de segments en DEFAULT_AIS alors qu'en réalité, le problème vient d'ailleurs.
De plus, on a déjà eu des coupures de l'instance en production (BDD pleine, facture impayée (oups), maintenance).
On peut voir leur trace dans la table spire_ais_data.
J'ai référencé dans un CSV les gap post archivage de Nicolas donc il me manque qu'un mois depuis qu'on a migré vers CleverCloud.
Comment pourrait-on imaginer suivre ces interruptions et donc pouvoir différencier une perte du signal venant du bateau/zone VS le back ?
The text was updated successfully, but these errors were encountered: