Files
janssen/Python-runner/0_run_pipeline_v1.0.md
2026-06-05 21:21:30 +02:00

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.log
  • pipeline_3.log
  • pipeline_4.log
  • pipeline_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