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

78 lines
2.7 KiB
Markdown

# 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í
```bash
# 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):
```bash
#!/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 |