Hébergé chez moi En prod depuis Mars 2019 ± 6 utilisateurs
C'est une application web assez simple permettant d'avoir le prix de certaines stations essence.
Nous aurons un tableau par station avec le type de carburant et son prix.
Nous aurons plusieurs zones identifiées par un nom, chacune de ces zones contiennent plusieurs stations.
Bien que les sites soient souvent à jour, nous avons l'habitude de nous rendre dans certaines stations essence, il nous fallait donc une application avec des prix à jour, mais aussi configurable.
Récupérer les prix de l'essence sur le site du gouvernement (lien). Les prix sont mis à jour tous les jours à 5h, ces données sont fournies dans un fichier xml zippé. Dans ce fichier le point de vente (pdv) est un identifiant unique pour une station, pour certaines raisons le nom de la station n'est pas fournie. Pour cela j'utilise le fichier suivant (lien) comme base pour le nom de la station et sa marque (Carrefour, Auchan, …). Le nom et la marque peuvent être surchargé dans la configuration de l'application.
Il est possible de sélectionner plusieurs stations d'une ville, un point de vente (par exemple 62300012) est formé d'un code postal (rouge) et d'un identifiant unique (vert), dans notre application seuls les stations en France métropolitaine sont utilisés. (voir la config pour plus d'information)
Il faut donc deux services, un service web et un service qui s'occupe de la mise à jour.
Programme de mise à jour
Serveur Web
Les services fonctionnent via systemd. Le programme de mise à jour est lancé toutes les heures.
Le service web fonctionne avec Gunicorn.
Le client web (html, js, css, …) et les images sont desservis par Nginx (c'est fait pour).
La base de données est un serveur Redis avec les données uniquement en RAM, dans le pire des cas (redémarrage du serveur) il faut relancer le service de mise à jour, cela permet de ne pas fair trop d'écriture sur le disque.
Dans la configuration, il est possible de :
carburants:
- Gazole
- SP95
- E10
- SP98
- E85
stations:
62300016:
marque: auchan
nom: Atac
62881001:
marque: carrefour
nom: Carrefour Lens 2
zones:
lens:
villes:
- "62300"
- "62800"
stations:
- "62143002"
- "62881001"
exclusions:
- "62300012"
image: home
gravelines:
villes:
- "59820"
- "59153"
image: ship