etalab / noms-de-domaine-organismes-secteur-public

Liste de noms de domaine d'organismes publics
Other
23 stars 15 forks source link

WIP: Use an intermediate file as an HTTP response cache. #36

Closed JulienPalard closed 2 years ago

JulienPalard commented 2 years ago

En lien, indirect, avec :

Avec peu de domaine, au début, consolidate.py mettait moins d'une heure à tourner, ça m'allait.

Depuis peu, consolidate.py met plus de 8h à faire son travail, ça ne me convient plus.

Le souci c'est qu'il doit tester tous les domaines qui sont dans sources/ mais pas dans urls.txt, c'est à dire tous ceux qui ont été rajoutés (bonne idée de les vérifier) et tous ceux qui n'ont pas répondu les dernières fois (c'est ça qui grossit et prend du temps).

L'objectif : pouvoir, après avoir rajouté une poignée de domaines dans sources/* les ajouter à urls.py en quelques secondes.

Je propose donc de stocker, en plus de la liste des domaines qui répondent en HTTP, la liste de ceux qui ne répondent pas, ainsi on peut obtenir la liste des domaines fraîchement rajoutés, et les tester rapidement.

Pour ne pas polluer urls.txt, je propose d'utiliser un fichier "intermédiaire", domains.csv, dans lequel on pourrait stocker tout ce qui pourrait être utile au traitement, pour le moment j'y stocke :

L'idée de ce format est de se laisser la posibilité à l'avenir de rajouter des paires :

Et si on va un jour par là, on pourra avoir des outils différents pour mettre à jour différentes colonnes, un script pourrait s'occuper du http, un autre du SMTP, un autre du SSH, …

On pourrait aussi profiter de la date de dernier test pour maintenir l'ensemble frais sans avoir à tout re-tester : avec --limit on peut relancer une vérification des n domaines les moins frais, qu'ils aient répondu ou non la dernière fois, et donc en actualiser 1/30 par jour pour tous les toucher au moins une fois par mois, ou 1/365 par jour, …

Ce n'est pas terminé, il manque clairement une option qui permettrai de ne requêter que ceux qui viennent d'être ajoutés, qui est l'objectif initial, on pourrait le simuler en ajoutant n domaines et en exécutant http_check.py --limit n, si domains.csv était entièrement peuplé, ce qui n'est pas le cas dans cette PR non plus.

Je n'ai pas d'avis tranché sur le statut de domains.csv, on peut considérer que c'est un produit du repo, au même titre que urls.txt, comme on peut considérer que c'est un cache, un fichier intermédiaire, pas destiné à être réutilisé.

Bien que j'avoue apprécier pouvoir faire un grep 'certificate has expired' domains.csv.

villesinternet commented 2 years ago

Bravo, j'adhère complètement à cette méthode :

Pour le statut de domain .csv :

mfaure commented 2 years ago

Cela me parait fort intéressant !

Je retiens que nous avons deux besoins :

et donc, vraisemblablement, deux manières d'y répondre