Poll-Takt von 15 Minuten auf 2 Stunden senken
Reduziert den Traffic gegen die Quellen. slot_von() rundet jetzt generisch auf TAKT-Grenzen statt fest auf 15-Minuten-Slots, die Stillstands-Schwelle in quellen_stillstand steigt von 6h auf 24h, damit der Watchdog nicht schon nach drei verpassten Slots anschlaegt. GDELT-Vergleich aus den Kommentaren entfernt, da die Slots nicht mehr mit dessen 15-Minuten-Paketen zusammenfallen. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013vHZCwcCJnz4LKNgvT4bxv
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
c43d8496bf
commit
8a1ab8a146
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Ingest-Poller fuer den deutschen Ereignisdatensatz.
|
||||
|
||||
Liest die Quellen aus sources.toml, holt alle 15 Minuten die Feeds und legt
|
||||
Liest die Quellen aus sources.toml, holt alle 2 Stunden die Feeds und legt
|
||||
jedes neue Item roh ab. Bewusst ohne Kodierung: was hier landet, soll sich
|
||||
beliebig oft neu kodieren lassen.
|
||||
|
||||
@@ -10,7 +10,7 @@ Zwei Senken:
|
||||
--sink jsonl:/pfad/dir Schatten-Ingest als gzip-JSONL pro Slot
|
||||
|
||||
Aufrufe:
|
||||
poller.py --sink "$DATABASE_URL" # Dauerbetrieb, 15-Minuten-Takt
|
||||
poller.py --sink "$DATABASE_URL" # Dauerbetrieb, 2-Stunden-Takt
|
||||
poller.py --sink "$DATABASE_URL" --once # ein Durchlauf
|
||||
poller.py --check-robots # Lizenzstatus nachpruefen
|
||||
"""
|
||||
@@ -40,7 +40,7 @@ USER_AGENT = os.environ.get(
|
||||
"INGEST_USER_AGENT",
|
||||
"wurzelwerk-ingest/0.1 (+https://stinkwurzpresse.de/wurzelwerk; kontakt@stinkwurzpresse.de)",
|
||||
)
|
||||
TAKT = 15 * 60 # Slotlaenge in Sekunden, wie bei GDELT
|
||||
TAKT = 2 * 60 * 60 # Slotlaenge in Sekunden
|
||||
VERSATZ = 30 # Sekunden nach der Slotgrenze, nicht exakt darauf
|
||||
NS = {
|
||||
"a": "http://www.w3.org/2005/Atom",
|
||||
@@ -66,9 +66,10 @@ def _jetzt():
|
||||
|
||||
|
||||
def slot_von(ts):
|
||||
"""Auf 15 Minuten abrunden, wie GDELTs Paketgrenzen."""
|
||||
return ts.replace(second=0, microsecond=0,
|
||||
minute=(ts.minute // 15) * 15)
|
||||
"""Auf TAKT-Sekunden seit Epoch abrunden (bei 2 h also volle gerade Stunden)."""
|
||||
sekunden = int(ts.timestamp())
|
||||
return dt.datetime.fromtimestamp(
|
||||
(sekunden // TAKT) * TAKT, tz=dt.timezone.utc)
|
||||
|
||||
|
||||
def norm_titel(t):
|
||||
|
||||
Reference in New Issue
Block a user