Inhaltsidentität, Regelversion und Grenzen des Aufräumens erklären.
Ein Cache darf nur ein Ergebnis wiederverwenden, dessen Eingabe und Regeln zum neuen Auftrag passen. Gleicher Pfad, gleiche Größe und ein gleicher Sekunden-Zeitstempel beweisen keinen gleichen Inhalt. Unser Übungsvertrag kombiniert deshalb Inhalts-Hash, Extraktorversion und Modus; auch die Abdeckung wird gespeichert. Jeder Lauf besitzt einen eigenen Arbeitsbereich. Bei normalem Ende oder behandelten Ausnahmen räumt ein finally-Pfad beziehungsweise Kontextmanager auf. Das garantiert keine Bereinigung nach SIGKILL, Stromausfall oder einem Prozessabsturz. Eine spätere Bereinigung braucht Besitzinformationen und darf aktive Läufe nicht allein wegen ihres Alters löschen. Ein validierter Kandidat wird erst am festgelegten Veröffentlichungspunkt sichtbar.
Ein Beispiel
Zwei erfundene Texte KATALOG-A und KATALOG-B haben dieselbe Länge. Ein Metadaten-Schlüssel könnte sie verwechseln. Ihr Inhalts-Hash unterscheidet sie. Ebenso erhalten OCR-Vorschau und Vollmodus getrennte Schlüssel. Ein Abbruch vor Veröffentlichung lässt den alten gültigen Cacheeintrag bestehen; das neue Teilergebnis bleibt unfreigegeben.
Python 3.11 · Lehrbeispiel
from hashlib import sha256
def cache_key(text, version, mode):
digest = sha256(text.encode("utf-8")).hexdigest()
return digest, version, mode
print(cache_key("KATALOG-A", "v1", "preview") ==
cache_key("KATALOG-B", "v1", "preview"))
Erwartete Ausgabe
False