Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compte00:00:00 :Dans cette partie, on va installer Cron, qui va nous permettre de lancer ce qu'on appelle un CronJob.Qu'est-ce que c'est en fait un CronJob ? C'est tout simplement quelque chose qui va nous permettre de répéter une action à intervalles de temps réguliers,
00:00:45 :Là, vous voyez que ça nous dit que la commande n'est pas trouvée et on a l'intelligence artificielle qui nous suggère d'installer le package Cron.On peut utiliser cet IA, on peut aussi utiliser directement le package manager puisque sur notre distribution de Linux, ici de AWS, ça va être le package manager yum
00:01:02 :et on va installer le package qui s'appelle Cronie, comme ceci, C-R-O-N-I-E, c'est le package qui va nous permettre de lancer le service Cron,donc CronD qui va en fait lancer le service qui va exécuter ces tâches de façon régulière.
00:01:19 :Je valide avec entrée pour installer cet utilitaire, ça va être assez rapide comme vous le voyez.Maintenant qu'on l'a installé, on va pouvoir démarrer le service. Pour cela, on va faire sudo systemctl enable CronD.
00:01:31 :Ça va permettre d'activer le service pour qu'il soit démarré automatiquement quand on va démarrer notre serveur Linux.Et la deuxième commande qu'on va faire qui nous est suggérée ici, je vais la compléter automatiquement, c'est start CronD,donc on n'oublie pas le D à la fin, et ça, ça va lancer le service.
00:01:47 :On peut ensuite vérifier que le service fonctionne bien en refaisant cette commande CronTab-E.Je valide avec entrée et là, je suis bien à l'intérieur du fichier, donc pour l'instant, ça paraît assez minimaliste et c'est le caspuisqu'en fait, c'est juste un fichier dans lequel on va mettre les règles qui vont dire à quel intervalle de temps on veut répéter une action
00:02:05 :et on va mettre ensuite ce qu'on veut faire, dans notre cas, ce sera le script de scrapping.Donc pour l'instant, je vais sortir de cet éditeur en faisant 2.Q et je valide avec entrée et là, ça me permet comme ça de sortir de cet éditeur
00:02:17 :parce qu'on était tout simplement avec Vim à l'intérieur du fichier de CronTab.Donc comment ça fonctionne, l'écran de tab, vous allez voir en fait cette syntaxe ici.
00:02:25 :Là, je suis sur un site qui s'appelle CronTab Guru.Vous en avez des centaines comme ça.Il suffit de chercher sur Google ou autre.Vous en avez plein qui vous permettent de voir cette syntaxe.
00:02:34 :Donc là, si je clique sur Random pour vous en montrer quelques-uns, vous voyez que là, on est à 4h05 tous les matins.Donc là, si je fais Random, vous voyez, on est à minuit 5 en août.
00:02:46 :Donc en fait, à chaque fois, vous avez les minutes, les heures, le jour, le mois et le jour de la semaine.Donc généralement, les 3 derniers ici, on les utilise assez rarement à moins que vous ayez quelque chose de très très précis à faire comme ici.
00:03:03 :Généralement, ce qu'on va faire, c'est donc avoir les 3 derniers ici qui vont être les étoiles.Donc pour le jour, le mois et le jour de la semaine.
00:03:10 :Et ici par contre, on va pouvoir mettre des step values aussi qui sont intéressantes avec le slash.Donc là, si par exemple, je mets étoile slash 5, ça va être toutes les 5 minutes après l'heure.
00:03:20 :Si je mets ici par contre une étoile, on va être vraiment toutes les 5 minutes.Donc comme ça, vous pourrez par exemple faire quelque chose toutes les minutes.
00:03:27 :Donc si on ne met que des étoiles, c'est toutes les minutes.Si je mets le slash 5, ça va être toutes les 5 minutes.Là, ça va être toutes les quarts d'heure, etc.
00:03:34 :On peut faire pareil ici.Si je mets slash 5, ça va être chaque minute après la cinquième heure.Donc vous avez des choses très compliquées que vous pouvez faire comme ça.
00:03:42 :Généralement aujourd'hui, avec l'intelligence artificielle, il suffit de demander à n'importe quel LLM et il va vous faire la syntaxe nécessaire pour votre cronjob.Donc nous, dans notre cas, ça va être tous les matins.
00:03:53 :Donc si je mets par exemple l'heure ici, ça va être à 1h du matin.Ici, on va le mettre simplement à 0.Donc comme ça, vous voyez, ça va être à 1h du matin.
00:04:02 :Si vous voulez le faire à 1h10, il suffit de mettre 10 ici.Vous comprenez la logique.Donc là, je vais laisser ici comme ça 0, 1 et les 3 étoiles.
00:04:10 :Et on va retourner dans notre terminal ici pour exécuter notre script.Donc notre script, il est à l'intérieur de Scraping Cinema.Et l'utilitaire Python qu'on utilise, il est à l'intérieur de notre environnement virtuel.
00:04:22 :Donc si je fais un ls-la, on voit qu'on a notre v en vici, donc je peux le sourcer.Et si je fais ici un which Python 3, on va avoir le chemin complet vers notre exécutable Pythonqui va être utilisé pour lancer notre script dans le bon environnement.
00:04:37 :Donc je vais copier tout ça et on va lancer avec "-m dans scraper.main", si je me souviens bien.Et là, ça va lancer le script avec l'exécutable Python de notre environnement virtuel.
00:04:50 :Donc en fait, la commande qu'on veut lancer tous les matins à 1h, ça va être exactement celle-ci.Donc je vais la copier et je vais retourner dans mon crontab.
00:04:58 :Donc on va faire crontab-e.Et ici, on va se mettre en mode insertion en appuyant sur i.Et on va remettre notre 0, 1 et les 3 étoiles à la suite.
00:05:08 :Vous voyez qu'on a une belle petite coloration syntaxique également.Et après ça, je vais mettre tout simplement le chemin du script,donc le chemin de l'exécutable et ce qu'on souhaite exécuter,donc dans ce cas-ci, "-m est le nom du module".
00:05:21 :Et pour vérifier que ça fonctionne bien, avant de le lancer à 1h tous les matins,on va faire plus simple.On va supprimer ce qu'on a mis là et on va mettre que des étoiles.
00:05:30 :Comme ça, ça va l'exécuter toutes les minutes.Donc je vais faire ça pour tester que ça fonctionne bien.Je fais escape, 2.wq pour enregistrer et sortir de Vim.
00:05:40 :Et là, notre crontab est correctement lancé.Donc là, on peut faire crontab-l pour voir tous les crontabs qui sont actifs,tous les cronjobs qui sont actifs.
00:05:50 :Crontab, en fait, c'est l'outil pour éditer les cronjobs.Je me mélange un petit peu dans tous les termes, il y a du cron de partout.
00:05:55 :Donc cronjobs ici, qui est bien actif.Et si on va voir dans notre dossier data, je vais faire un cd à l'intérieur du dossier data.
00:06:03 :Pour l'instant, on a un seul fichier ici qui date du 22-02-2025,donc le 22 février.Aujourd'hui, on est le 23.Donc là, si je fais un watch de ls-la à l'intérieur de ce dossier,donc watch, ça permet tout simplement de répéter une commande à intervalle régulier.
00:06:22 :Donc là, à l'intérieur de ce dossier, on fait un ls-la toutes les deux secondes.Et normalement, dans une minute, et bien un peu moins d'une minute maintenant,on devrait voir un nouveau fichier qui va apparaître.
00:06:32 :Alors peut-être un peu plus qu'une minute, en fait,puisque le scrapping va prendre peut-être 30 secondes.Donc on va attendre un petit peu, et je vais couper, je vais faire pause,et je reprends quand le fichier apparaît.
00:06:43 :S'il n'apparaît pas, c'est qu'on a eu un problème quelque part.Et là, comme vous le voyez, ça ne fonctionne pas.Alors je vais vous avouer quelque chose.
00:06:49 :En fait, c'était un petit peu prévu, parce qu'en fait, ici, on a allé un petit peu vite.On a juste pris exactement ce qu'on exécutait dans le terminal,mais ça ne fonctionne pas.
00:06:58 :Et on va voir comment on débug un peu tout ça, et pourquoi ça ne fonctionne pas actuellement.Donc si je refais mon crontab-l, vous voyez que notre commande, ici,c'est la commande qu'on a exécutée à l'intérieur de notre dossier Scrapping Cinema.
00:07:10 :Là, quand on lance le crontab, en fait, lui, il ne va pas être dans ce dossier.Il ne va pas être à l'intérieur de ce dossier.
00:07:17 :Donc ce qu'il faut faire, c'est se déplacer à l'intérieur de ce dossier.Donc là, on peut faire un CD.On peut lier deux commandes à la suite avec les perluettes, comme ça.
00:07:25 :Mais ça finit par faire une commande assez longue, là, qui va être sur le crontab.Donc ce qu'on peut faire à la place, c'est plutôt un script bash,qui va contenir toutes les commandes qu'on a besoin de faire.
00:07:34 :Parce que, bon, pour l'instant, il n'y en a que deux.Juste un CD, et ensuite, l'exécution du script.Mais on pourrait imaginer que dans une tâche cron, on ait beaucoup plus de choses à faire.
00:07:43 :Donc le mieux, finalement, c'est de faire un petit fichier .sh,qui va être un fichier bash, qui va nous permettre de faire toutes ces commandes.
00:07:50 :Comme ça, on aura juste à modifier ce fichier, si jamais on veut changer des choses,et ne pas avoir à revenir à l'intérieur du crontab pour modifier la commandequ'on veut exécuter à intervalles réguliers.
00:08:01 :Donc ce que je vais faire, c'est, dans mon root ici, dans mon utilisateur,je vais créer un fichier avec Vim.Je vais l'appeler scrapper.sh.Je vais appuyer sur I pour me mettre en mode insert.
00:08:11 :On va mettre ici le shebang pour dire que c'est un script qui doit être exécutéavec l'exécutable de bash.Et ensuite, on va faire un CD à l'intérieur du dossier.
00:08:21 :Pour ça, je vais aller retrouver le chemin complet.Je ne m'en souviens plus, donc je vais faire Escape,et on va interrompre Vim en faisant CTRL-Z.
00:08:29 :Donc ça, en fait, ça nous permet de momentanément mettre en pause ce qu'on faisait.Si on veut revenir, on peut faire juste FG.Je valide, et là, vous voyez que je reviens dans le dernier élément dans lequel j'étais.
00:08:39 :Donc je refais CTRL-Z pour ressortir.Je vais retourner dans mon scrapping cinéma,et on va faire un PWD pour avoir le chemin complet.Donc c'est à l'intérieur de ce dossier qu'on veut naviguer.
00:08:49 :Je refais FG pour me remettre en foreground,I pour me mettre en mode insert,et on va faire un CD dans ce chemin, donc dans ce dossier ici.
00:08:57 :Et ensuite, je vais remettre la commande que j'avais au complet, donc celle-ci.Et pour être sûr, on va enlever aussi ce petit raccourci.On va mettre le chemin vraiment absolu.
00:09:05 :Donc on va faire //home//ec2-user.Et ensuite, c'est directement dans Scrapping Cinéma,venv, bin, piton3-m, et le nom du module.Donc normalement, c'est tout bon.On va faire esc2.wq pour sauvegarder tout ça.
00:09:18 :On va ensuite rendre le fichier exécutable avec schmod.Donc on va faire un schmod plus x, plus x comme ça, et le nom du fichier.
00:09:26 :Donc là, c'est scrapper.sh, scrapper.sh comme ceci.Alors là, je suis à l'intérieur de Scrapping Cinéma,donc je vais remonter un niveau au-dessus.Et on va faire donc schmod plus x,donc plus x, c'est pour le rendre exécutable, de scrapper.sh.
00:09:41 :Donc là, si je fais maintenant scrapper.sh,vous allez voir que ça lance correctement mon script,même si je ne suis pas à l'intérieur du dossier Scrapping Cinéma.
00:09:50 :Donc ce qu'on va faire, c'est récupérer le chemin ici du dossier,que j'ai affiché avec pwd,et je vais revenir dans mon crontab-e.Et là, donc, à la place de ce chemin qu'on avait ici,je reviens en mode édition avec i,en mode insert plutôt,et je vais supprimer tout ça,
00:10:07 :et à la place, on va mettre tout simplement le chemin vers scrapper.sh.Je quitte vim.wq pour sortir en sauvegardant,et là, on va retourner dans scrappingcinema.data,
00:10:19 :on va faire un crontab-l pour vérifier que le script est bien sauvegardé,donc on a bien effectivement notre scrapper.sh,et dans mon data, je vais refaire un watch-ls-la.
00:10:30 :Je valide, et là, cette fois-ci, ça devrait fonctionner.Et voilà, donc comme prévu, cette fois-ci, ça a bien fonctionné,on a notre script qui est affiché ici,et je pourrais laisser tourner le cronjob comme il est actuellement,et à peu près toutes les minutes,plus ou moins avec le temps que prend le script à être exécuté,
00:10:48 :on aurait un nouveau fichier JSON ici.Donc là, je ne veux pas trop surcharger le site sur lequel on fait du scrapping,donc je vais revenir dans mon crontab avec crontab-e,et ici, on va revenir avec notre exécution tous les matins,donc là, je vais mettre 0 et 1 pour l'exécuter à 1h du matin,
00:11:04 :je sors de Vim, et voilà, on a lancé notre crone.Donc vous voyez, on a fait pas mal de petits allers-retours,c'est vraiment pour vous montrer que ce n'est pas aussi simple que ça,on ne peut pas juste prendre une commande,il faut bien penser à tout ce qu'on fait,
00:11:16 :il faut bien penser que quand on est dans l'exécution du crone,eh bien, on n'est pas dans le dossier dans lequel on est,il faut éviter les chemins relatifs,il faut, quand vous avez des commandes,juste Python 3, il ne va pas forcément savoirque c'est le Python de votre environnement virtuel,
00:11:30 :donc si vous avez un environnement virtuel,il faut mettre vraiment le chemin vers l'exécutable du Pythonde votre environnement virtuel, et tout ce genre de choses.
Ce n'est pas fini...
✋
Tu as complété % du parcours 🔥
Termine l'intégralité de la formation pour pouvoir débloquer ton attestation de réussite.