Que fait État SQLite ?
Utilisez cette compétence lorsqu'un job récurrent doit se souvenir de ce qu'il a déjà fait – les éléments sur lesquels il a déjà alerté, le dernier curseur qu'il a traité – afin de ne pas re-notifier ou re-scraper au prochain tick. Un fichier SQLite standard offre un état persistant, verrouillé au niveau fichier, sans serveur et sans dépendance supplémentaire.
Quand invoquer
- L'utilisateur dit : « n'alerte pas deux fois la même chose », « déduplique entre les exécutions », « souviens-toi du dernier ID », « reprends là où tu t'es arrêté ».
- Le code dans la conversation est un script cron/planifié qui retraite actuellement tout à chaque exécution.
Quand NE PAS invoquer
- L'état est minuscule et éphémère au sein d'une seule exécution – un simple ensemble/dictionnaire suffit.
- Plusieurs machines doivent partager l'état en concurrence ; préférez une vraie base de données serveur plutôt qu'un seul fichier.
Exemple concret
Entrée utilisateur :
Mon scraper d'actualités renvoie les mêmes titres chaque heure. Fais en sorte qu'il n'envoie que les nouveaux.
Sortie :
from state import filter_new, mark_seen
db = "news.db"
fresh = filter_new(db, [a["url"] for a in articles]) # uniquement les URLs non vues
for url in fresh:
send_alert(url)
mark_seen(db, *fresh) # les mémoriser pour la prochaine exécution
Patron à appliquer
- Clé chaque élément par quelque chose de stable et unique (URL, ID, empreinte du contenu), pas par position dans un tableau.
- Utilise
filter_newpour décider sur quoi agir, puismark_seenseulement après que l'action a réussi. - Stocke la progression sous forme de curseur nommé (
set_cursor/get_cursor) pour qu'un scraper reprenable redémarre en cours de route. - Active le mode WAL pour des écritures durables avec des lecteurs concurrents ; garde un seul script écrivain.
- Sauvegarde ou versionne le seul fichier
.db– c'est toute la mémoire du job.
Référence : assets/state.py.
Source
Distillé à partir d'une utilisation en production dans les projets d'automatisation de l'auteur. v1.0.0. Voir aussi : [[pipeline-orchestrator]], [[cron-dispatch]], [[webhook-receiver]].
→ Construisez le bot complet et exécutable avec Trawlkit.