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

Validation périodique de urls.txt #29

Closed
JulienPalard opened this issue Mar 26, 2022 · 5 comments
Closed

Validation périodique de urls.txt #29

JulienPalard opened this issue Mar 26, 2022 · 5 comments

Comments

@JulienPalard
Copy link
Collaborator

Aujourd’hui, scripts/consolidate.py s’assure que chaque URL ajoutée dans urls.txt répond 200 OK.

Cependant, comme indiqué dans #6, on a rien pour vérifier que ça reste vrai.

Il faudrait donc un script qui repasse sur urls.txt pour en retirer les URL qui ne répondent plus, et peut être en faire un commit avec la raison du retrait (échec DNS, échec TLS, échec HTTP, redirection, …).

@mfaure
Copy link
Collaborator

mfaure commented Mar 28, 2022

Merci @JulienPalard d'avoir créé cette issue !

Dans Gitlab, on peut programmer des Jobs CI (p. ex. toutes les nuits), j'imagine qu'on doit pouvoir faire pareil dans Github, et a minima faire la verif (vert = OK ; rouge = traitement manuel à faire).

J'étends la réflexion sur les entrées à supprimer : est-ce qu'on en conserve une trace quelques part, genre dans un fichier -cimetiere.txt ? Je n'arrive pas à savoir si cette idée à de la valeur. Vos avis ?

@bzg
Copy link
Member

bzg commented Mar 28, 2022 via email

@JulienPalard
Copy link
Collaborator Author

J'étends la réflexion sur les entrées à supprimer : est-ce qu'on en conserve une trace quelque part, genre dans un fichier -cimetiere.txt ? Je n'arrive pas à savoir si cette idée à de la valeur. Vos avis ?

Si un jour on en a besoin on pourra reconstruire la liste à partir de l'historique git.

@JulienPalard
Copy link
Collaborator Author

J'ai mené une expérience durant mes vacances :

* 3201f3f Refreshing 1k domains. 2022-05-07 09:49:34 +0200 Julien Palard
* 4918e7e Refreshing 1k domains. 2022-05-07 09:49:33 +0200 Julien Palard
* 8d92a64 Refreshing 1k domains. 2022-05-07 09:49:33 +0200 Julien Palard
* c031a97 Refreshing 1k domains. 2022-05-07 09:49:33 +0200 Julien Palard
* 6169b86 Refreshing 1k domains. 2022-05-07 09:49:32 +0200 Julien Palard
* 1a0ab5f Refreshing 1k domains. 2022-05-01 12:15:42 +0200 Julien Palard
* b01e55c Refreshing 1k domains. 2022-05-01 11:32:29 +0200 Julien Palard

C'était :

from sys import executable
from time import sleep
from subprocess import run as _run

def run(command):
    _run(command, shell=True, check=False)


run(f"{executable} scripts/http_checker.py -s --limit 1000")
run("git add urls.txt domains.csv")
run("git commit -m 'Refreshing 1k domains'.")
sleep(60)
run(f"{executable} scripts/http_checker.py -s --grep $(git show urls.txt | grep ^- | sed 1d | cut -d/ -f3)")
run("git add urls.txt domains.csv")
run("git commit -m 'Fix last refresh 1mn later'.")
sleep(60 * 15)
run(f"{executable} scripts/http_checker.py -s --grep $(git log -p urls.txt | grep ^-http | head -n 100 | cut -d/ -f3)")
run("git add urls.txt domains.csv")
run("git commit -m 'Recheck last 100 removals'.")

Pas de git push, ça m'a permis de relire en rentrant de vacances pour voir à quel point une exécution automatique peut remonter des faux positifs et faire "clignotter" des domaines dans urls.txt.

En conclusion :

  • Oui ça remonte parfois des faux positifs, pas tant que ça.
  • Ça remonte surtout des down temporaires (certificats renouvelés trop tard, erreure 500 temporaire, ...)

Je viens donc de mettre en place :

=> https://github.com/etalab/noms-de-domaine-organismes-publics/blob/master/.github/workflows/refresh.yml

Je ne pense pas qu'il faille faire comme mon script (de gros sleep), mais plutôt une autre tâche périodique dédiée à retester les domaines qui ont disparu récement, et donc qui ont de forte chances de revenir rapidement.

Peut-être via quelque chose comme :

python scripts/http_checker.py --grep $(git diff urls.txt | grep ^- | sed 1d | cut -d/ -f3)

ou plus élaboré, le problème du git diff | grep ^- c'est qu'il reteste aussi les domaines qui ont changé de protocole :

- http://data.gouv.fr
+ https://data.gouv.fr

^ là le grep trouve le - et on reteste data.gouv.fr pour rien. Il faudrait faire mieux,

@JulienPalard
Copy link
Collaborator Author

Les actions github en place font correctement leur travail, je ferme cette issue.

Elles actualisent 1000 domaines par jour, ce qui "boucle" actuellement en 85 jours.

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

No branches or pull requests

3 participants