2.7 KiB
2.7 KiB
0_run_pipeline_v1.0.py
Wrapper kolem celé emailové pipeline. Spustí postupně všechny 4 kroky daily syncu, vždy přes všechny dostupné schránky:
| # | Krok | Skript |
|---|---|---|
| 1b | Graph delta sync (inkrementální Mongo update) | 1b_parse_emails_graph_delta_v1.0.py |
| 3 | Download attachments | 3_download_attachments_v1.4.py |
| 4 | Unwrap S/MIME | 4_unwrap_smime_v1.0.py |
| 5 | Enrich fulltext (PG) | 5_enrich_fulltext_emails_v1.3.py |
Politika chyb
Default je continue-on-error — když některý krok selže, pipeline pokračuje dalším (downstream se nezasekne kvůli minor problému). Po vyběhnutí dostaneš souhrnnou tabulku s OK / FAIL(N) per krok.
Použij --stop-on-error pokud chceš tvrdou abort při první chybě.
Logování
Každý krok jde do vlastního logu v /scripts/pipeline_<id>.log:
pipeline_1b.logpipeline_3.logpipeline_4.logpipeline_5.log
Live výstup se zároveň tee-uje na konzoli (vypneš přes --quiet).
Argumenty
| Argument | Hodnoty | Popis |
|---|---|---|
--only |
1b 3 4 5 |
Spustit jen tyto kroky |
--skip |
1b 3 4 5 |
Přeskočit tyto kroky |
--stop-on-error |
flag | Zastavit při první chybě (default: pokračovat) |
--quiet |
flag | Necpat stdout na konzoli (zůstane v logu) |
Varianty volání
# Daily run — vše, všechny schránky:
docker exec -it python-runner python /scripts/0_run_pipeline_v1.0.py
# Jen enrich (např. po manuálním zásahu do Mongo):
docker exec -it python-runner python /scripts/0_run_pipeline_v1.0.py --only 5
# Vše mimo S/MIME (krok 4 občas vyžaduje pip install asn1crypto):
docker exec -it python-runner python /scripts/0_run_pipeline_v1.0.py --skip 4
# Test daily sync bez fulltextu:
docker exec -it python-runner python /scripts/0_run_pipeline_v1.0.py --only 1b 3 4
# Na pozadí, master log:
docker exec -d python-runner bash -c "python /scripts/0_run_pipeline_v1.0.py --quiet > /scripts/pipeline_master.log 2>&1"
docker exec -it python-runner tail -f /scripts/pipeline_master.log
Cron / nightly automation
Pro nightly se hodí jednoduchý cron na Unraidu (/etc/cron.daily/ nebo User Scripts plugin):
#!/bin/bash
docker exec python-runner python /scripts/0_run_pipeline_v1.0.py --quiet \
> /mnt/user/Scripts/pipeline_$(date +%Y%m%d).log 2>&1
Stačí denně, delta sync z minulého stavu trvá ~30s s prázdným backlogem.
Exit kódy wrapperu
| Kód | Význam |
|---|---|
| 0 | Všechny kroky OK |
| 1 | Alespoň jeden krok selhal |
| 2 | Žádný krok k běhu (--only + --skip vyloučily vše) |
| 127 | Některý skript neexistuje v /scripts/ |
| 130 | Přerušeno Ctrl+C |